Cod sursa(job #346912)

Utilizator adibAdrian Bona adib Data 10 septembrie 2009 08:29:41
Problema Jocul Flip Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <stdio.h>
#include <stdlib.h>

int m,n,y[16];
long max=-2147483648,mat[16][16],x[16];


int reactsume(int linie)
{
int i,j;
for (j=0;j<m;j++)
  {
  x[j]=0;
  for(i=0;i<n;i++)
    if (linie==i)
      x[j]-=mat[i][j];
    else
      x[j]+=mat[i][j];
  }
return 0;
}


int back(int k)
{
int t;
long s=0;
if (k<m)
  {
    back(k+1);
    x[k]=-x[k];
    back(k+1);
  }
else if (k==m)
{
    s=0;
    for(t=0;t<m;t++)
      s+=x[t];
    if (s>max)
      max=s;

}

return 0;
}

/*int backrand(int k)
{
if (k<n)
{
  y[k]=1;
  backrand(k+1);
  y[k]=-1;
  backrand(k+1);
}
else if (k==n)
  {
     reactsume(y);
     back(0);
  }

return 0;
}  */



int main()
{
int i,j;
FILE *f;
f=fopen("flip.in","r");
fscanf(f,"%d",&n);
fscanf(f,"%d",&m);
for (i=0;i<n;i++)
  for (j=0;j<m;j++)
    fscanf(f,"%ld",&mat[i][j]);
fclose(f);

//backrand(0);
reactsume(0);
back(0);
for(i=0;i<n;i++)
{
  reactsume(i);
  back(0);
}

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


return 0;
}