Cod sursa(job #75600)

Utilizator alex23alexandru andronache alex23 Data 3 august 2007 20:22:44
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>


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

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


s_max=0;

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

fclose(fin);

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--;
       }
   for (i=1;i<=m;i++)
       {a[y][i]=-a[y][i];
	st[i]=st[i]+2*a[y][i];
	}
   s=0;
   for (i=1;i<=m;i++)
      if (st[i]>0) s+=st[i];
	      else s=s-st[i];
   if (s>s_max) s_max=s;
   }
   }



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

return 0;
}