Cod sursa(job #328767)

Utilizator points_hunterAdrian Dobrescu points_hunter Data 3 iulie 2009 12:38:46
Problema Jocul Flip Scor 80
Compilator c Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<stdio.h>
#include<string.h>

int flip(int n, int m, int a[16][16]){
     int sc1[16],sc[16],i,j,s,k,sum=0;
     for(j=0;j<m;j++){
        s=0;
        for(i=0;i<n;i++)
          s+=a[i][j];
        sc[j]=s;
        sum+=sc[j];
        }
     int max=sum;
     for (i=1;i < 1<<(n-1); i++){
         memcpy(sc1,sc,m*sizeof(int));
         for(j=0;j<n;j++)
               if ( i & 1<<j )                    
                    for(s=0;s<m;s++)
                       sc1[s]=sc1[s] + 2*(-a[j][s]);
         sum=0;             
         for ( j=0; j<m; j++)
            if(sc1[j]<0)
              sum=sum-sc1[j];
            else
                sum=sum+sc1[j];
         if (sum>max)
            max=sum;
         }
     return max;
     }  
         
          
     
int main(){
    int i,j;
    freopen("flip.in","r",stdin);
    freopen("flip.out","w",stdout);
    int n,m;
    scanf("%d%d",&n,&m);
    int a[16][16];
    for ( i=0;i<n;i++ )
        for( j=0;j<m;j++ )
            scanf("%d",&a[i][j]);
    printf("%d",flip(n,m,a));
    return 0;
    }