Pagini recente » Cod sursa (job #1653912) | Cod sursa (job #1593974) | Cod sursa (job #2732991) | Cod sursa (job #353453) | Cod sursa (job #2471166)
#include<iostream>
#include<vector>
#include<fstream>
using namespace std;
const int minValue = -1000 * 1000;
int get_sum(vector<vector <int>> &a) {
int sum = 0;
for (int i = 0; i < (int)a.size(); i++) {
int cur_sum = 0;
for (int j = 0; j < (int)a[i].size(); j++)
cur_sum += a[i][j];
cur_sum = max(cur_sum, -1 * cur_sum);
sum += cur_sum;
}
return sum;
}
void modify_columns(int pos, int n, int m, vector<vector <int>> &a, int &max_sum) {
if (pos == m) {
int sum = get_sum(a);
if (sum > max_sum)
max_sum = sum;
return;
}
modify_columns(pos + 1, n, m, a, max_sum);
for (int i = 0; i < n; i++) {
a[i][pos] = -1 * a[i][pos];
}
modify_columns(pos + 1, n, m, a, max_sum);
return;
}
int main() {
#ifdef INFOARENA
ifstream cin("flip.in");
ofstream cout("flip.out");
#endif
int n, m; cin >> n >> m;
vector<vector <int>> a(n, vector<int>(m));
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
cin >> a[i][j];
int max_sum = 256 * minValue;
modify_columns(0, n, m, a, max_sum);
cout << max_sum << "\n";
return 0;
}