Pagini recente » Cod sursa (job #1425435) | Monitorul de evaluare | Cod sursa (job #1312762) | Cod sursa (job #77679) | Cod sursa (job #1244922)
#include<stdio.h>
using namespace std;
int l[17],c[17],a[17][17];
int main(){
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
int n,m,x,y,i,j,s,max=-1,x1,y1;
scanf("%d%d",&m,&n);
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
x1=m/2+m%2;
y1=n/2+n%2;
for(i=1;i<=m;i++)
l[i]=1;
for(i=1;i<=n;i++)
c[i]=1;
for(i=0;i<=(1<<(x1+y1))-1;i++){
for(j=0;j<x1+y1;j++){
if((i>>j)&1==1)
if(j<x1)
l[j+1]=-1;
else
c[j+1-x1]=-1;
else
if(j<x1)
l[j+1]=1;
else
c[j+1-x1]=1;
}
s=0;
for(x=1;x<=m;x++)
for(y=1;y<=n;y++)
s=s+a[x][y]*l[x]*c[y];
if(s>max)
max=s;
for(x=1;x<=m;x++)
l[x]*=-1;
s=0;
for(x=1;x<=m;x++)
for(y=1;y<=n;y++)
s=s+a[x][y]*l[x]*c[y];
if(s>max)
max=s;
for(x=1;x<=n;x++)
c[x]*=-1;
s=0;
for(x=1;x<=m;x++)
for(y=1;y<=n;y++)
s=s+a[x][y]*l[x]*c[y];
if(s>max)
max=s;
for(x=1;x<=m;x++)
l[x]*=-1;
s=0;
for(x=1;x<=m;x++)
for(y=1;y<=n;y++)
s=s+a[x][y]*l[x]*c[y];
if(s>max)
max=s;
for(x=1;x<=n;x++)
c[x]*=-1;
}
printf("%d",max);
return 0;
}