Pagini recente » Cod sursa (job #2499711) | Cod sursa (job #1788580) | Cod sursa (job #2284833) | Cod sursa (job #235334) | Cod sursa (job #1457222)
#include <fstream>
#define MaxN 20
using namespace std;
int max (int a, int b) {
return a > b ? a : b;
}
ifstream fin("flip.in");
ofstream fout("flip.out");
int N, M;
int T[MaxN][MaxN];
int colSum[MaxN], rowSum[MaxN];
int tSum, result;
int main() {
fin >> N >> M;
for (int i = 0; i < N; ++i)
for (int j = 0; j < M; ++j)
fin >> T[i][j];
for (int i = 0; i < N; ++i)
for (int j = 0; j < M; ++j) {
tSum += T[i][j];
rowSum[i] += T[i][j];
colSum[j] += T[i][j];
}
for (int rowsBits = 0; rowsBits < (1 << N); ++rowsBits) {
int sum = tSum;
for (int i = 0; i < N; ++i)
if (((1 << i) & rowsBits) > 0)
sum -= 2 * rowSum[i];
for (int j = 0; j < M; ++j) {
int newSum = sum - 2 * colSum[j];
for (int i = 0; i < N; ++i)
if (((1 << i) & rowsBits) > 0)
newSum += 3 * T[i][j];
sum = max(sum, newSum);
}
result = max(result, sum);
}
fout << result << '\n';
}