Cod sursa(job #412987)

Utilizator lau08Laurentiu Capatina lau08 Data 7 martie 2010 12:29:20
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#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;
}