Pagini recente » Cod sursa (job #1225715) | Cod sursa (job #1177671) | Cod sursa (job #755560) | Cod sursa (job #992580) | Cod sursa (job #2589673)
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 16;
const int MMAX = 16;
const int DMAX = (1 << 16);
long long a[NMAX + 5][MMAX + 5] , sp[DMAX + 5][MMAX + 5] , l[NMAX + 5] , c[MMAX + 5];
int main()
{
freopen("flip.in" , "r" , stdin);
freopen("flip.out" , "w" , stdout);
int n , m , i , j , k;
long long s , smax;
scanf("%d%d" , &n , &m);
for(i = 1 ; i <= n ; i ++)
for(j = 1 ; j <= m ; j ++)
{
scanf("%lld" , &a[i][j]);
l[i] = l[i] + a[i][j];
c[j] = c[j] + a[i][j];
}
for(j = 1 ; j <= m ; j ++)
for(i = 0 ; i < (1 << n) ; i ++)
for(k = 0 ; k < n ; k ++)
if((i & (1 << k)) != 0)
sp[i][j] = sp[i][j] + a[k + 1][j];
smax = 0;
for(i = 0 ; i < (1 << n) ; i ++)
{
s = 0;
for(j = 0 ; j < n ; j ++)
if((i & (1 << j)) != 0)
s = s - l[j + 1];
for(j = 1 ; j <= m ; j ++)
s = max(s + c[j] - sp[i][j] , s - c[j] + 3 * sp[i][j]);
smax = max(s , smax);
}
printf("%lld\n" , smax);
return 0;
}