Cod sursa(job #168972)

Utilizator ovy2906Popescu Ovidiu ovy2906 Data 31 martie 2008 22:05:16
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include<stdio.h>  
int n,m,v[20][20],l[20],c[20],l1[20],c1[20],sol[20],smax=0;  
void calc()  
{  
    int i,j,s=0;  
    for(i=1; i<=n; i++)  
         l1[i]=l[i];  
     for(j=1; j<=m; j++)  
         c1[j]=c[j];  
     for(i=1; i<=m; i++)  
     {  
         if(sol[i]==-1)  
         {  
             for(j=1; j<=n; j++)  
                 l1[j]-=v[j][i]+v[j][i];  
         }  
     }  
     for(i=1; i<=n; i++)  
     {  
         if(l1[i]<0)  
             s-=l1[i];  
         else  
             s+=l1[i];  
     }  
     if(s>smax)  
         smax=s;  
 }  
 void back(int k)  
 {  
     if(k==m+1)  
         calc();  
     else  
     {  
         sol[k]=1;  
         back(k+1);  
         sol[k]=-1;  
         back(k+1);  
     }  
 }  
 int main()  
 {  
     int i,j;  
     freopen("flip.in","r",stdin);  
     freopen("flip.out","w",stdout);  
     scanf("%d%d",&n,&m);  
     for(i=1; i<=n; i++)  
     {  
         for(j=1; j<=m; j++)  
         {  
             scanf("%d",&v[i][j]);  
             c[j]+=v[i][j];  
             l[i]+=v[i][j];  
         }  
     }  
     for(i=1; i<=n; i++)  
         smax+=l[i];  
     back(1);  
     printf("%d",smax);  
     return 0;  
 }