Cod sursa(job #1991)

Utilizator be_smartellora be_smart Data 15 decembrie 2006 16:24:53
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream.h>
#include <iostream.h>
#include <values.h>
long a[17][17],max=-MAXLONG,sum=0;
int v[17];
int m,n;
void flip(int k)
{
   int i;
   for(i=1;i<=n;i++)
    a[k][i]=0-a[k][i];
}
int main()
{
  ifstream f("flip.in");
  ofstream g("flip.out");
  int i,j,k=1,ok;
  long s;
  f>>m>>n;
  for(i=1;i<=m;i++)
   for(j=1;j<=n;j++)
    f>>a[i][j];
  f.close();
  v[k]=-1;
  while(k>0)
  {
     ok=0;
     while(v[k]<1&&!ok)
     {
	v[k]++;
       if(v[k]) flip(k);
	ok=1;
     }
     if(ok)
      if(m==k)
      {  sum=0;
	 for(i=1;i<=n;i++)
	 {
	   s=0;
	   for(j=1;j<=m;j++)
	    s+=a[j][i];
	   if(s<0) sum=sum-s;
	   else sum+=s;
	 }
	 if(sum>max) max=sum;
      }
      else
       v[++k]=-1;
     else
     {
       k--;
       if(v[k]) flip(k);
     }
  }
  g<<max;
  g.close();
  return 0;
}