Pagini recente » Cod sursa (job #1102491) | Cod sursa (job #3152489) | Cod sursa (job #1307877) | Cod sursa (job #2505557) | Cod sursa (job #1775035)
#include <fstream>
#include <cstring>
#define maxn 20
using namespace std;
int n, m;
int initialSum = 0;
int mat[maxn][maxn];
int sumPerLine[maxn];
ifstream in("flip.in");
void read() {
in >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++) {
in >> mat[i][j];
sumPerLine[i] += mat[i][j];
initialSum += mat[i][j];
}
}
int main() {
read();
int best = initialSum;
int currentSum;
int currentLine[maxn];
for (int i = 1; i < 1 << m; i++) {
memcpy(currentLine, sumPerLine, (n + 1) * sizeof(int));
for (int j = 0; j < 32; j++) {
if (i & (1 << j)) {
for (int k = 1; k <= n; k++) {
currentLine[k] += -2 * mat[k][j+1];
}
}
}
currentSum = 0;
for (int k = 1; k <= n; k++) {
if (currentLine[k] < 0)
currentSum -= currentLine[k];
else
currentSum += currentLine[k];
}
if (currentSum > best)
best = currentSum;
}
ofstream out("flip.out");
out << best;
return 0;
}