Cod sursa(job #80734)

Utilizator bent_larsenSturzu Antonio-Gabriel bent_larsen Data 29 august 2007 17:35:02
Problema Jocul Flip Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

int x[16],semne[65536][16],nr=-1;



void ScrieSol(int m)
{int i;
  nr++;
  for(i=0;i<m;i++)
  semne[nr][i]=x[i];
  
}


void back(int k,int m)
{
  int i;

  if(k==m) ScrieSol(m);
  else

  for(i=-1;i<=1;i+=2)
  {
   x[k]=i;
   back(k+1,m);
  }
}


int main()
{

  int a[16][16],i,j,puteri[16]={2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536},rez[16][16],s=0,t=0;
  int sum=0,max=-32000,n,m;
  FILE *f=fopen("flip.in","r");

  fscanf(f,"%i",&n);
  fscanf(f,"%i",&m);

  for(i=0;i<n;i++)
  {
   
   for(j=0;j<m;j++)
   fscanf(f,"%i",&a[i][j]);
  }

 back(0,m);
 

 for(t=0;t<puteri[m-1];t++)
  {

 sum=0;
 for(j=0;j<m;j++)
  {

   for(i=0;i<n;i++)
   rez[i][j]=a[i][j]*semne[t][j];
  }

  
  

  for(i=0;i<n;i++)
  {
   s=0;
   for(j=0;j<m;j++)
   s+=rez[i][j];
   if(s>=0) sum=sum+s;
   else sum=sum-s;
  }
   if(sum>max) max=sum;

}

fclose(f);
f=fopen("flip.out","w");
fprintf(f,"%i",max);
fclose(f);
return 0;


}