Pagini recente » Cod sursa (job #87850) | Cod sursa (job #2201888) | Cod sursa (job #1109979) | Cod sursa (job #2568568) | Cod sursa (job #1514382)
#include <cstdio>
#include <algorithm>
int N, M;
int maxSum;
int mat[20][20], s[20];
inline int abs(int nr) {
return nr > 0 ? nr : -nr;
}
inline void f(int a, int b) {
for(register int i = 1; i <= M; ++ i)
s[i] += b * (mat[a][i] << 1);
}
void backtracking(int step = 1) {
if(step == N + 1) {
int ans = 0;
for(register int i = 1; i <= M; ++ i)
ans += abs(s[i]);
maxSum = std::max(ans, maxSum);
} else {
backtracking(step + 1);
f(step, -1);
backtracking(step + 1);
f(step, +1);
}
}
int main(void) {
freopen("flip.in", "r", stdin);
freopen("flip.out", "w", stdout);
scanf("%d %d", &N, &M);
for(register int i = 1; i <= N; ++ i)
for(register int j = 1; j <= M; ++ j)
scanf("%d", &mat[i][j]),
s[j] += mat[i][j];
backtracking();
printf("%d\n", maxSum);
return 0;
}