Pagini recente » Monitorul de evaluare | Cod sursa (job #2155541) | Cod sursa (job #1315594) | Cod sursa (job #2937137) | Cod sursa (job #1816894)
#include <cstdio>
#include <climits>
#ifdef INFOARENA
#define ProblemName "flip"
#endif
#define MCONCAT(A, B) A B
#ifdef ProblemName
#define InFile MCONCAT(ProblemName, ".in")
#define OuFile MCONCAT(ProblemName, ".out")
#else
#define InFile "fis.in"
#define OuFile "fis.out"
#endif
typedef long long LL;
#define MAXN 20
int mat[MAXN][MAXN];
int N, M;
LL sumCol(int colNum, int msk) {
LL ans = 0LL;
for (int i = 0; i < N; ++i)
ans += ((msk & i) ? (-mat[i][colNum]) : mat[i][colNum]);
return (ans < 0LL) ? (-ans) : ans;
}
int main() {
freopen(InFile, "r", stdin);
freopen(OuFile, "w", stdout);
scanf("%d%d", &N, &M);
for (int i = 0; i < N; ++i)
for (int j = 0; j < M; ++j)
scanf("%d", &mat[i][j]);
int lim = (1 << N);
LL best = LLONG_MIN;
for (int msk = 0; msk < lim; ++msk) {
LL candidate = 0LL;
for (int i = 0; i < M; ++i)
candidate += sumCol(i, msk);
if (candidate > best) best = candidate;
}
printf("%lld\n", best);
return 0;
}