Cod sursa(job #585201)

Utilizator csrazvanRazvan Alecsandrescu csrazvan Data 28 aprilie 2011 13:37:36
Problema Jocul Flip Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.19 kb
//#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

int max(int a,int b){
    if(a>b)
     return a;
     return b;
}
int main(int argc, char *argv[])
{
   FILE *f = fopen("flip.in","r");
   FILE *g = fopen("flip.out","w+");
   int n,m;

   fscanf(f,"%d %d",&n,&m);
   int matrix[n][m];
   int i=0,j=0;
   for(i=0;i<n;i++)
      for(j=0;j<m;j++)
          fscanf(f,"%d",&matrix[i][j]);               
   int sum = -999999999;

   for (i=0;i<(1<<m);i++){
       
       int mask[m];
       for(j=0;j<m;j++)
          mask[j]=0;
       int k=0;
       int aux =i;
       while(aux!=0){
           mask[k++]=aux%2;
           aux=aux/2;
       }
       int auxSum=0;
       for(j=0;j<n;j++){
         int partialSum=0;                        
         for(k=0;k<m;k++){
             if(mask[k]==1)
               partialSum+=matrix[j][k]*-1;
             else 
               partialSum+=matrix[j][k];
         
         }
         auxSum+=max(partialSum,-partialSum);
       }
       if(auxSum>sum)
       sum = auxSum;
            
       
   }   
   fprintf(g,"%d",sum);
   printf("%d",sum);
   getchar();
   fclose(f);
   fclose(g);
  return 0;
}