Pagini recente » Cod sursa (job #466676) | Cod sursa (job #840798) | Cod sursa (job #3271357) | Cod sursa (job #1198154) | Cod sursa (job #412987)
Cod sursa(job #412987)
#include<stdio.h>
FILE *f=fopen("flip.in","r");
FILE *g=fopen("flip.out","w");
int n,m,i,j,sw;
long a[17][17],smax=-100000000,st[400];
int max(int x,int y)
{if(x>y) {sw=0;return x;}
else {sw=1; return y;}
}
void schimbare(int i,int j)
{int q;
for(q=1;q<=n;q++)
a[q][j]=a[q][j]*(-1);
for(q=1;q<=m;q++)
a[i][q]=a[i][q]*(-1);
}
long suma()
{int s=0,j,q;
for(j=1;j<=n;j++)
for(q=1;q<=m;q++)
s+=a[j][q];
return s;
}
void back(int k,int i,int j)
{long p;
p=suma();
st[k]=p;
schimbare(i,j);
p=suma();
if(p>st[k])
st[k]=p;
else schimbare(i,j);
if(i==n && j==m)
{
for(i=1;i<=k;i++)
if(smax<st[i])smax=st[i];
return;
}
if(j==m)
back(k+1,i+1,1);
else back(k+1,i,j+1);
}
int main()
{fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
fscanf(f,"%ld",&a[i][j]);
st[1]=-100000000;
back(1,1,1);
fprintf(g,"%ld\n",smax);
return 0;
}