Var ma:array[1..n,1..n] of integer; i,j,max,maxj,a:integer; begin max:=-1; randomize; writeln('Matrix:'); for i:=1 to n do begin; for j:=1 to n do begin; ma[i,j]:=random(10); write(ma[i,j]:4); end; writeln; end; for j:=1 to n do begin for i:=1 to n do a:=a+ma[i,j]; if a>max then begin max:=a; maxj:=j; end; a:=0; end; write('Максимальный по сумме столбец:',maxj); end.
bool ok1(int a, int b, int c){
return (a+b > c && a+c > b && b+c > a) && min(a,min(b,c)) > 0;
}
bool ok2(int a, int b, int c){
return ok1(a,b,c) && (a == b || a == c || b == c);
}
signed main(){
const int n = 3, m = 7;
int arr[n][m];
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
cin >> arr[i][j];
vector<int> ans;
for(int j = 0; j < m; j++)
if(ok2(arr[0][j],arr[1][j],arr[2][j]))
ans.push_back(j+1);
cout << ans.size() << "\n";
for(auto i: ans)
cout << i << " ";
}
Подробнее - на -
Объяснение:
Const
n=5;
Var
ma:array[1..n,1..n] of integer;
i,j,max,maxj,a:integer;
begin
max:=-1;
randomize;
writeln('Matrix:');
for i:=1 to n do
begin;
for j:=1 to n do
begin;
ma[i,j]:=random(10);
write(ma[i,j]:4);
end;
writeln;
end;
for j:=1 to n do
begin
for i:=1 to n do
a:=a+ma[i,j];
if a>max then
begin
max:=a;
maxj:=j;
end;
a:=0;
end;
write('Максимальный по сумме столбец:',maxj);
end.
Пример работы кода:
Matrix:
8 6 8 0 2
6 1 2 9 8
8 1 8 0 1
4 5 1 5 2
3 0 9 9 5
Максимальный по сумме столбец:1