Pagini recente » Cod sursa (job #423950) | Cod sursa (job #899533) | Cod sursa (job #499313) | Cod sursa (job #834753) | Cod sursa (job #2278724)
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
long long calcSum(vector<vector<int>> x) {
long long sum = 0;
int length = x.size(), length2;
for(int i = 0; i < length; ++i) {
length2 = x[i].size();
for(int j = 0; j < length2; ++j)
sum += x[i][j];
}
return sum;
}
void reverseLine(vector<vector<int>> &x, int line) {
int length = x[line].size();
for(int j = 0; j < length; ++j)
x[line][j] *= -1;
}
void reverseCol(vector<vector<int>> &x, int col) {
int length = x.size();
for(int i = 0; i < length; ++i)
x[i][col] *= -1;
}
int sumCol(vector<vector<int>> &x, int col) {
int length = x.size();
int sum = 0;
for(int i = 0; i < length; ++i)
sum += x[i][col];
return sum;
}
int sumLine(vector<vector<int>> &x, int line) {
int length = x[line].size();
int sum = 0;
for(int i = 0; i < length; ++i)
sum += x[line][i];
return sum;
}
int main()
{
freopen("flip.in", "r", stdin);
freopen("flip.out", "w", stdout);
int n, m;
cin >> n >> m;
vector<vector<int>> x(n, vector<int>(m));
for (int i = 0; i < n; ++i) {
for(int j = 0; j < m; ++j)
cin >> x[i][j];
}
for(int i = 0; i < n; ++i) {
for(int j = 0; j < m; ++j) {
if(x[i][j] < 0)
{
if(sumCol(x, j) < 0)
{
if(sumLine(x, i) < sumCol(x, j))
reverseLine(x, i);
else
reverseCol(x, j);
}
else if (sumLine(x, i) < 0)
reverseLine(x, i);
}
}
}
cout << calcSum(x);
return 0;
}