Pagini recente » Monitorul de evaluare | Cod sursa (job #1473745) | Cod sursa (job #2445798) | Cod sursa (job #872593) | Cod sursa (job #2221963)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int mat[17][17];
int n, m;
bool line(int value){
int sum1 = 0, sum2 = 0;
for(int i = 0; i < m; i++){
if(mat[value][i] > 0)sum1 += mat[value][i];
else sum2 += abs(mat[value][i]);
}
if(sum1 < sum2){
for(int i = 0; i < m; i++){
mat[value][i] *= -1;
}
return false;
} else return true;
}
bool col(int value){
int sum1 = 0, sum2 = 0;
for(int i = 0; i < n; i++){
if(mat[i][value] > 0)sum1 += mat[i][value];
else sum2 += abs(mat[i][value]);
}
if(sum1 < sum2){
for(int i = 0; i < n; i++){
mat[i][value] *= -1;
}
return false;
} else return true;
}
int main(){
fin >> n >> m;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
fin >> mat[i][j];
}
}
bool check = false;
while(!check){
check = true;
for(int i = 0; i < n; i++){
check = check and line(i);
}
for(int i = 0; i < m; i++){
check = check and col(i);
}
}
int sum = 0;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
sum += mat[i][j];
}
}
fout << sum;
return 0;
}