Cod sursa(job #383926)

Utilizator drywaterLazar Vlad drywater Data 18 ianuarie 2010 19:35:06
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>
int m,n,i,j,st[34];
long a[17][17],s,s2[400];
FILE *f=fopen("flip.in","r"),*g=fopen("flip.out","w");
int main(void)
{
	fscanf(f,"%d%d",&n,&m);
	for (i=1;i<=n;i++)
		for (j=1;j<=m;j++)
		{	
			fscanf(f,"%ld",&a[i][j]);
			s=s+a[i][j];
		}
	int k=1;
	st[1]=1;
	s2[1]=s;
	while (k>0)
	{
		if (st[k]<=n)
			for (j=1;j<=m;j++) {s2[k]=s2[k]-2*a[st[k]][j]; a[st[k]][j]=a[st[k]][j]*(-1);}
		else for (i=1;i<=n;i++) {s2[k]=s2[k]-2*a[i][st[k]%n]; a[i][st[k]%n]=a[i][st[k]%n]*(-1);}
		if (s2[k]>s)
			s=s2[k];
		if (st[k]<n+m) {k++; st[k]=st[k-1]+1; s2[k]=s2[k-1];}
		else {while (st[k]==n+m)
			{
			   for (i=1;i<=n;i++) {a[i][st[k]%n]=a[i][st[k]%n]*(-1);}
			   s2[k]=0;
			   k--; 
		    }
			  if (k>0)
			{
				if (st[k]<=n)
					for (j=1;j<=m;j++) {a[st[k]][j]=a[st[k]][j]*(-1);}
					else for (i=1;i<=n;i++) {a[i][st[k]%n]=a[i][st[k]%n]*(-1);}
				s2[k]=s2[k-1];
				st[k]++;
			}
			}
	}
	fprintf(g,"%ld\n",s);
	fclose(g);
	return 0;
}