Pagini recente » Cod sursa (job #2204097) | Cod sursa (job #1401994) | Cod sursa (job #233793) | Cod sursa (job #1745857) | Cod sursa (job #1457226)
#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;
int 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 += 3 * T[i][j];
sum = max(sum, newSum);
}
result = max(result, sum);
}
fout << result << '\n';
return 0;
}