Pagini recente » Cod sursa (job #2869064) | Cod sursa (job #2961490) | Cod sursa (job #1515314) | Cod sursa (job #2362890) | Cod sursa (job #1888025)
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
int max_sum = 0;
void flipColumns(vector<vector<int> > matrix) {
int new_sum = 0;
for (int j = 0; j < matrix[0].size(); j ++) {
int neg_sum = 0, poz_sum = 0;
for (int i = 0; i < matrix.size(); i ++) {
if (matrix[i][j] < 0) {
neg_sum -= matrix[i][j];
} else {
poz_sum += matrix[i][j];
}
}
if (neg_sum > poz_sum) {
new_sum += neg_sum - poz_sum;
} else {
new_sum += poz_sum - neg_sum;
}
}
max_sum = max(max_sum, new_sum);
}
void flipLines(vector<vector<int> > matrix, int k, bool sign) {
if (k == matrix.size()) {
flipColumns(matrix);
return;
}
for (int i = 0; i < matrix[0].size(); i ++) {
matrix[k][i] *= -1;
}
flipLines(matrix, k + 1, true);
if (sign)
flipLines(matrix, k, false);
}
int main() {
freopen("flip.in", "r", stdin);
freopen("flip.out", "w", stdout);
int n, m;
scanf("%d %d", &n, &m);
vector<vector<int> > matrix(n, vector<int>(m));
for (int i = 0; i < n; i ++) {
for (int j = 0; j < m; j ++) {
scanf("%d", &matrix[i][j]);
}
}
flipLines(matrix, 0, true);
printf("%d\n", max_sum);
return 0;
}