Pagini recente » Cod sursa (job #2647534) | Cod sursa (job #20927) | Cod sursa (job #578276) | Cod sursa (job #1987292) | Cod sursa (job #3253993)
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int n, m, mt[17][17];
long long ans;
void changeLine(int line) {
for (int j = 1; j <= m; ++j) {
mt[line][j] = -mt[line][j];
}
}
void changeCol(int col) {
for (int i = 1; i <= n; ++i) {
mt[i][col] = -mt[i][col];
}
}
long long computeSum() {
long long sum = 0;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
sum += mt[i][j];
}
}
return sum;
}
void gen(int pos, bool isComuted) {
if (pos == n + m + 1) {
ans = max(ans, computeSum());
return;
}
if (pos <= n && isComuted) {
changeLine(pos);
} else if (pos > n && isComuted) {
changeCol(pos - n);
}
gen(pos + 1, 0);
gen(pos + 1, 1);
}
int main() {
fin >> n >> m;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
fin >> mt[i][j];
}
}
gen(0, 0);
fout << ans;
return 0;
}