Pagini recente » Cod sursa (job #1898725) | Cod sursa (job #64747) | Cod sursa (job #1108884) | Cod sursa (job #3170800) | Cod sursa (job #1730278)
#include <cstdio>
#define NMax 18
int a[NMax][NMax];
int col[NMax];
int lin[NMax];
int v[NMax];
int main(){
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
int i,j,n,m,ans,temp,first,column;
scanf("%d %d",&n,&m);
for( i = 1; i <= n; ++i )
for( j = 1; j <= m; ++j ) scanf("%d",&a[i][j]);
for( first = 0, i = 1; i <= n; ++i )
for( j = 1; j <= m; ++j )
{
lin[i] += a[i][j];
col[j] += a[i][j];
first += a[i][j];
}
ans = first;
while(1)
{
// testam configuratia curenta
temp = first;
for( i = 1; i <= n; ++i )
if( v[i] ) temp = temp - 2*lin[i];
for( j = 1; j <= m; ++j )
{
column = (-2)*col[j];
for( i = 1; i <= n; ++i )
if( v[i] ) column += 4*a[i][j];
if( column > 0 ) temp = temp + column;
}
if( temp > ans ) ans = temp;
// next
for( i = n; i >= 1 && v[i]; --i ) v[i] = 0;
if( i < 1 ) break;
v[i] = 1;
}
printf("%d\n",ans);
return 0;
}