Cod sursa(job #159487)

Utilizator FlorinC1996Florin C FlorinC1996 Data 14 martie 2008 10:27:05
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.62 kb
 #include <stdio.h>   
#include <math.h>   
    int n,m;   
    int a[20][20];   
    int c;   
    long summax=0;   
void Attempt (void) {   
    int i,j;   
    int sum1,sum2,sumb=0;   
    for (i=0; i<m; i++) {   
        sum1=0;   
        sum2=0;   
        for (j=0; j<n; j++) {   
            if (c&1<<j) { sum1+=a[j][i]*(-1); } //sum2+=a[j][i]; }   
            else { sum1+=a[j][i]; } // sum2+=a[j][i]*(-1); };   
        };   
        sum2=-sum1;   
        sumb+=(sum1>sum2?sum1:sum2);   
    };   
    summax=(sumb>summax?sumb:summax);   
};   
int main (void) {   
    FILE * fi = fopen("flip.in","rt"); FILE * fo = fopen("flip.out","wt");   
    fscanf(fi,"%d %d",&n,&m);   
//  long maxsum=0;   
    int i,j;   
    for (i=0; i<n; i++) {   
        for (j=0; j<m; j++) {   
            fscanf(fi,"%d",&a[i][j]);   
        };   
    };   
//  for (i=0; i<n; i++) {   
//      c[i]=0;   
//  };   
    for (c=0; c<pow(2,n-1); c++){   
        Attempt();   
    };   
/*  char AllOK=0;  
    while (!AllOK) {  
        AllOK=0;  
        if (c[n-1]==0) { c[n-1]=1; AllOK=0; }  
        else if (c[n-1]==1) {  
            c[n-1]=0;  
            c[n-2]++;  
            for (i=n-2; i>0; i--) {  
                if (c[i]>1) { c[i]=0; c[i-1]++; };  
            };  
            if (c[0]>1) AllOK=1;  
        };  
        if (!AllOK) {  
            for (i=0; i<n; i++) {  
//              printf("%c",c[i]+1);  
            };  
//          printf("\n");  
        };  
        Attempt();  
    };*/  
    fprintf(fo,"%ld",summax);   
    fclose(fi); fclose(fo);   
    return 0;   
};