Cod sursa(job #6208)

Utilizator robbyRobertino robert robby Data 18 ianuarie 2007 11:00:00
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <stdio.h>
FILE *f,*g;
long a[17][17],l[17],c[17],b[17][17];
long suma(long n,long m)
{
   long p,o,sum;
   sum=0;
   for (p=1;p<=n;p++)
     for (o=1;o<=m;o++)
       sum+=b[p][o];
   return sum;
}
int main()
{
  long n,m,i,j,s,k1,k2,smax,semn1,semn2;
  FILE *f=fopen("flip.in","rt");
  FILE *g=fopen("flip.out","wt");
  fscanf(f,"%ld %ld",&n,&m);
  for (i=1;i<=n;i++)
    for (j=1;j<=m;j++)
      fscanf(f,"%ld",&a[i][j]);
  smax=0;
  while (!l[0])
   {
     i=n;
     l[i]++;
     while (l[i]>1)
       {
	  l[i-1]++;
	  l[i]=0;
	  i--;
       }
     for (j=0;j<=m;j++)
       c[j]=0;
     while (!c[0])
       {
	 j=m;
	 c[j]++;
	 while (c[j]>1)
	   {
	     c[j-1]++;
	     c[j]=0;
	     j--;
	   }

	 s=0;

	 for (k1=1;k1<=n;k1++)
	   {
	     if (l[k1]==1)
	       semn1=-1;
	      else
	       semn1=1;
	     for (k2=1;k2<=m;k2++)
	       {
		 if (c[k2]==1)
		   semn2=-1;
		  else
		   semn2=1;
		 b[k1][k2]=a[k1][k2]*semn1*semn2;
	       }
	   }
	 s=suma(n,m);
	 if (s>smax)
	   smax=s;
       }
   }
  fprintf(g,"%ld\n",smax);
  fclose(f);
  fclose(g);
  return 0;
}