Pagini recente » Cod sursa (job #2978258) | Cod sursa (job #1447403) | Cod sursa (job #1067053) | Cod sursa (job #216739) | Cod sursa (job #195828)
Cod sursa(job #195828)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 16
int n, m;
int a[MAXN][MAXN];
long long sl[MAXN + 2], cl[MAXN + 2];
int main( )
{
freopen( "flip.in", "r", stdin );
freopen( "flip.out", "w", stdout );
int i, j, k;
scanf( "%d%d", &n, &m );
for( i = 0 ; i < n ; i++ )
for( j = 0 ; j < m ; j++ )
scanf( "%d", &a[i][j] );
long long res = -(1LL << 30);
for( k = 0 ; k < (1 << m) ; k++ )
{
sl[0] = sl[n + 1] = 0LL;
for( i = 1 ; i <= n ; i++ )
{
sl[i] = 0LL;
for( j = 0 ; j < m ; j++ )
if( k & (1 << j) )
sl[i] -= a[i - 1][j];
else
sl[i] += a[i - 1][j];
}
cl[0] = 0LL;
for( i = 1 ; i <= n + 1 ; i++ )
{
long long cSum = -sl[i];
cl[i] = 0LL;
for( j = i - 1 ; j >= 0 ; j-- )
{
if( cl[j] + cSum > cl[i] )
cl[i] = cl[j] + cSum;
cSum += sl[j];
}
}
if( cl[n + 1] > res )
res = cl[n + 1];
}
printf( "%lld\n", res );
return 0;
}