Pagini recente » Cod sursa (job #1660177) | Cod sursa (job #2798280) | Cod sursa (job #1636921) | Cod sursa (job #715599) | Cod sursa (job #1233219)
// Craciun Catalin
// Flip
// Infoarena
#include <iostream>
#include <fstream>
#define NMax 20
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int n, m;
int A[NMax][NMax];
int S[NMax]; // Sign
bool found = false;
int maxim = 0;
inline int positive (int x) { if (x < 0) return -x; return x; }
int foundConfig() {
int sum = 0;
for (int i=1;i<=n;i++) {
int scol = 0;
for (int j=1;j<=m;j++)
scol += A[i][j] * S[j];
sum += positive(scol);
}
return sum;
}
void back(int x) {
if (x == m+1) {
if (!found) {
maxim = foundConfig();
found = true;
} else {
int value = foundConfig();
if (maxim < value) {
maxim = value;
}
}
} else {
S[x] = 1; back(x+1);
S[x] = -1; back(x+1);
}
}
int main() {
f>>n>>m;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
f>>A[i][j];
back(1);
g<<maxim<<'\n';
f.close(); g.close();
return 0;
}