Pagini recente » Cod sursa (job #3220973) | Cod sursa (job #2555442) | Monitorul de evaluare | Cod sursa (job #302611) | Cod sursa (job #3239942)
#include <iostream>
#include <fstream>
#include <climits>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int main() {
int N, M;
fin >> N >> M;
int board[17][17];
for (int i = 0; i < N; ++i) {
for (int j = 0; j < M; ++j) {
fin >> board[i][j];
}
}
int maxSum = INT_MIN;
for (int rowFlipMask = 0; rowFlipMask < (1 << N); ++rowFlipMask) {
int tempBoard[17][17];
for (int i = 0; i < N; ++i) {
for (int j = 0; j < M; ++j) {
tempBoard[i][j] = board[i][j];
if (rowFlipMask & (1 << i)) {
tempBoard[i][j] *= -1;
}
}
}
int currentSum = 0;
for (int j = 0; j < M; ++j) {
int columnSum = 0;
for (int i = 0; i < N; ++i) {
columnSum += tempBoard[i][j];
}
if (columnSum < 0) {
columnSum *= -1;
}
currentSum += columnSum;
}
if (currentSum > maxSum) {
maxSum = currentSum;
}
}
fout << maxSum << endl;
return 0;
}