Cod sursa(job #75590)

Utilizator alex23alexandru andronache alex23 Data 3 august 2007 17:06:12
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <stdio.h>


long s_max,s,i,j,a[20][20],max,p,v[100],m,n,x,y,aux[100],s_ant;

int main()
{FILE *fin,*fout;


s_max=0;

fin=fopen("flip.in","r");
fscanf(fin,"%d %d",&n,&m);
for (i=1;i<=n;i++)
   for (j=1;j<=m;j++)
     {fscanf(fin,"%d",&a[i][j]);
      s_max+=a[i][j];
      }

fclose(fin);

s_ant=s_max;

for(i=0;i<=n+m;i++) {v[i]=0;aux[i]=0;}

while (v[0]==0)
  {i=n+m;
   v[i]++;
   while (v[i]==2)
       {v[i]=0;v[i-1]=v[i-1]+1;i--;}
   if (v[0]==0)
   {
   i=n+m;
   y=0;
   while (y==0)
      {x=(v[i]+v[i-1])%2;
       if (x!=aux[i]) {y=i;aux[i]=x;}
       i--;
       }
   if (y>n) {s=0;
	     for (j=1;j<=n;j++)
	       {a[j][y-n]=-a[j][y-n];
		s+=a[j][y-n];
		}
	     s_ant=s_ant+(2*s);
	     if (s_ant>s_max) s_max=s_ant;
	     }
       else {s=0;
	     for (j=1;j<=m;j++)
	       {a[y][j]=-a[y][j];
		s+=a[y][j];
		}
	     s_ant=s_ant+(2*s);
	     if (s_ant>s_max) s_max=s_ant;
	     }
   }
   }






fout=fopen("flip.out","w");
fprintf(fout,"%d",s_max);
fclose(fout);

return 0;
}