Pagini recente » Cod sursa (job #2532485) | Cod sursa (job #402560) | Cod sursa (job #2406320) | Cod sursa (job #1947354) | Cod sursa (job #43252)
Cod sursa(job #43252)
#include<stdio.h>
int n,m,d[20],d2[20];
long a[20][20],c[20][20],cf[20][20];
long long max,s,s1;
FILE *f,*g;
void citire()
{f=fopen("flip.in","r");
g=fopen("flip.out","w");
fscanf(f,"%d %d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{fscanf(f,"%ld",&a[i][j]);cf[i][j]=a[i][j];
s1+=a[i][j];}
s=max=s1;}
void constituire1(int k)
{s=s1;
if(d[k]==1)
for(int i=1;i<=n;i++)
{c[i][k]=a[i][k]*(-1);
s=s-a[i][k]+c[i][k];}
if(s>max)
{max=s1=s;
for(int i=1;i<=n;i++)
a[i][k]=cf[i][k]=c[i][k];}}
void constituire2(int k)
{s=s1;
if(d2[k]==1)
for(int i=1;i<=m;i++)
{c[k][i]=cf[k][i]*(-1);
s=s-cf[k][i]+c[k][i];}
if(s>max)
{max=s1=s;
for(int i=1;i<=n;i++)
cf[k][i]=a[k][i]=c[k][i];}}
void bkt1(int k)
{for(int i=0;i<=1;i++)
{d[k]=i;
constituire1(k);
if(k<m)
bkt1(k+1);}}
void bkt2(int k)
{for(int i=0;i<=1;i++)
{d2[k]=i;
constituire2(k);
if(k<n)
bkt2(k+1);}}
int main()
{citire();
bkt1(1);
s=s1=max;
bkt2(1);
fprintf(g,"%lld",max);
fclose(f);
fclose(g);
return 0;}