Pagini recente » Cod sursa (job #1453164) | Cod sursa (job #1659168) | Cod sursa (job #513801) | Cod sursa (job #1892689) | Cod sursa (job #612564)
Cod sursa(job #612564)
#include <iostream>
using namespace std;
#define NM 17
#define inf 2000000000
int N, M, A[NM][NM];
int f2N()
{
int best = -inf;
for (int conf = 0; conf < (1<<N); ++conf)
{
int tsum = 0;
for (int j = 0; j < M; ++j)
{
int csum = 0;
for (int i = 0; i < N; ++i)
if ((1<<i) & conf) csum -= A[i][j];
else csum += A[i][j];
if (csum < 0) tsum -= csum;
else tsum += csum;
}
best = max (best, tsum);
}
return best;
}
int f2M()
{
int best = -inf;
for (int conf = 0; conf < (1<<M); ++conf)
{
int tsum = 0;
for (int i = 0; i < N; ++i)
{
int csum = 0;
for (int j = 0; j < M; ++j)
if ((1<<j) & conf) csum -= A[i][j];
else csum += A[i][j];
if (csum < 0) tsum -= csum;
else tsum += csum;
}
best = max (best, tsum);
}
return best;
}
int main()
{
freopen ("flip.in", "r", stdin);
freopen ("flip.out", "w", stdout);
scanf ("%d %d", &N, &M);
for (int i = 0; i < N; ++i)
for (int j = 0; j < M; ++j) scanf ("%d", &A[i][j]);
int ans;
if (N < M) ans = f2N();
else ans = f2M();
printf ("%d", ans);
return 0;
}