Pagini recente » Cod sursa (job #962446) | Cod sursa (job #618567) | Cod sursa (job #2634385) | Cod sursa (job #1716374) | Cod sursa (job #1457262)
#include <fstream>
#define MaxN 20
using namespace std;
int max (int a, int b) {
return a > b ? a : b;
}
long long max (long long a, long long b) {
return a > b ? a : b;
}
ifstream fin("flip.in");
ofstream fout("flip.out");
int N, M;
long long T[MaxN][MaxN];
long long colSum[MaxN], rowSum[MaxN];
long long 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) {
long long 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) {
long long newSum = sum - 2 * colSum[j];
for (int i = 0; i < N; ++i)
if (((1 << i) & rowsBits) > 0)
newSum += 4 * T[i][j];
sum = max(sum, newSum);
}
result = max(result, sum);
}
fout << result << '\n';
return 0;
}