Cod sursa(job #206058)

Utilizator tamicTamas Iulia tamic Data 4 septembrie 2008 13:34:48
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>

long a[20][20],b[20][20];
long long max;
int i,j,n,m;
int sol[20],use[20];
FILE *fin,*fout;

void vezi()
{
	int i,j;
   long long sum,tot=0;
   for(i=1;i<=n;i++);
   	for(j=1;j<=m;j++) a[i][j]=b[i][j];
   for(i=1;i<=n;i++)
   	if(use[i])
      	for(j=1;j<=m;j++) a[i][j]=-a[i][j];
   for(j=1;j<=m;j++)
   {
   	sum=0;
      for(i=1;i<=n;i++) sum +=a[i][j];
      if(sum>-sum) tot += sum; else tot += -sum;
   }
   if(tot>max) max=tot;
}

void back(int k)
{
	int i;
   for(i=sol[k-1]+1;i<=n;i++)
      {
      	sol[k]=i;
         use[i]=1;
         vezi();
         back(k+1);
         use[i]=0;
      }
}

int main()
{
   max=-20000000000000;
	fin=fopen("flip.in","r");
   fout=fopen("flip.out","w");
   fscanf(fin,"%d%d",&n,&m);
   for(i=1;i<=n;i++)
   	for(j=1;j<=m;j++)
      {fscanf(fin,"%ld",&a[i][j]);
       b[i][j]=a[i][j];}
   back(1);
   fprintf(fout,"%lld",max);
   fclose(fin); fclose(fout);
   return 0;
}