Cod sursa(job #75591)

Utilizator alex23alexandru andronache alex23 Data 3 august 2007 17:21:29
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.49 kb
#include <stdio.h>


int s_max,s,i,j,a[6][6],max,p,v[100],m,n,x,y,aux[100],s_ant,k;



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;i++) {v[i]=0;aux[i]=0;}

while (v[0]==0)
  {i=n;
   v[i]++;
   while (v[i]==2)
       {v[i]=0;v[i-1]=v[i-1]+1;i--;}
   if (v[0]==0)
   {
   i=n;
   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;    */
	     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;
	     for (i=1;i<=n;i++);
		for (j=1;j<=m;j++)
		    s+=a[i][j];
	     if (s>s_max) s_max=s;
	    // }
   for (i=1;i<=m;i++)
     {s=0;
      for (j=1;j<=n;j++)
	s+=a[j][i];
      if (s<0) {for (j=1;j<=n;j++)
		    a[j][i]=-a[j][i];
		s=0;
		for (j=1;j<=n;j++)
		    for (k=1;k<=m;k++)
		       s=s+a[j][k];
                if (s>s_max) s_max=s;
		//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;
}