Pagini recente » Cod sursa (job #728223) | Cod sursa (job #3194244) | Cod sursa (job #369120) | Cod sursa (job #2663748) | Cod sursa (job #193298)
Cod sursa(job #193298)
#include"stdio.h"
long mx[16][16],n,m,g,h;long SUM_MAX=-2000000000,SUM,st[33];
long sum()
{
long sum=0;
for(g=0;g<n*m;g++,sum+=mx[g/n+1][g%m+1]);
return sum;
}
void flip(int x)
{
if(x>n){x-=n;for(int g=1;g<=n;g++)mx[g][x]=-mx[g][x];}
else{for(int g=1;g<=m;g++)mx[x][g]=-mx[x][g];}
}
int val(int k)
{
for(int g=1;g<k;g++)if(st[k]==st[g])return 0;
return 1;
}
void back(int k)
{
SUM=sum();
if(SUM>SUM_MAX)SUM_MAX=SUM;
for(g=1;g<=n+m;g++)
{
st[k]=g;
if(val(k)){flip(g);back(k+1);flip(g);}
}
}
int main()
{
freopen("flip.in","r",stdin);freopen("flip.out","w",stdout);
scanf("%d%d",&n,&m);
for(g=1;g<=n;g++)for(h=1;h<=m;h++){scanf("%d",&mx[g][h]);}
back(1);
printf("%d",SUM_MAX);
return 0;
}