Cod sursa(job #535461)

Utilizator wabbitLarion Octavian wabbit Data 17 februarie 2011 11:34:00
Problema Jocul Flip Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<stdio.h>
#include<stdlib.h>

int v[20],n,m;
long int a[19][19],s;

void citire()
{
FILE *f=fopen("flip.in","rt");
fscanf(f,"%d %d",&n,&m);

int i,j; s=0;
long int c=0;

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

for(j=1;j<=m;j++)
 {c=0;
 for(i=1;i<=n;i++)
  c+=a[i][j];
 a[n+1][j]=c; 
 } 
fclose(f);     
     }

void suma(int k)
{
     
     int i,j;
     long int sum=0;
     
     for(i=1;i<=m;i++)
      { a[n+2][i]=a[n+1][i];
        for(j=0;j<=k;j++)              
         a[n+2][i]=a[n+2][i]+2*(-1)*a[v[j]][i];
        if(a[n+2][i]<0) a[n+2][i]=a[n+2][i]*(-1);
       sum+=a[n+2][i];
      }
   if(sum>s) s=sum;

}
   

void comb(int k,int p)
{
int i;
if(k==0) for(i=1;i<=n;i++) {v[k]=i; if(k==(p-1)) suma(k); else comb(k+1,p);}
else
 for(i=v[k-1]+1;i<=n;i++)
  {v[k]=i;
   if(k==(p-1)) suma(k);
   else comb(k+1,p);
  }     
}

int main()
{
citire();

int i;
for(i=1;i<=n;i++)
 comb(0,i);

FILE *h=fopen("flip.out","wt");
fprintf(h,"%ld",s);
fclose(h);

return 0;
}