Cod sursa(job #108769)

Utilizator savimSerban Andrei Stan savim Data 23 noiembrie 2007 20:07:00
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <stdio.H>
int main()
{
    int sum,max,i,j,k,n,m,p,q,s1,s2;
    int b[20][20],a[20][20];
    int back[20];
    
    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",&a[i][j]);
    
    for (i=1; i<=n; i++)
        back[i]=0;
    back[n]=-1;
    
    max=0;
    for (i=1; i<=(1<<n)-1; i++)
    {
        back[n]++;
        for (j=n; j>=1; j--)
            if (back[j]>2)
            {
               back[j]=0;
               back[j-1]++;           
            }
            else break;
        for (p=1; p<=n; p++)
            for (q=1; q<=m; q++)
                if (back[p]==0) b[p][q]=a[p][q];
                else b[p][q]=-a[p][q];
        sum=0;
        for (q=1; q<=m; q++)
        {
            s1=0;s2=0;  
            for (p=1; p<=n; p++)
            {
                s1+=b[p][q];
                s2+=-b[p][q];    
            }
            if (s1>s2) sum+=s1;
            else sum+=s2;
        }
        if (sum>max) max=sum;
    }
    printf("%d\n",max);
    
    return 0;    
}