Cod sursa(job #610526)

Utilizator crushackPopescu Silviu crushack Data 27 august 2011 19:09:20
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>
#define NMax 32

const char IN[]="flip.in",OUT[]="flip.out";

int N,M;
int a[NMax][NMax];

int solve()
{
    int i,j,mask,sum,plus,minus,ret=0;

    for (mask=0;mask<(1<<N);++mask)
    {
        sum=0;

        for (i=0;i<N;++i) if ( mask&(1<<i) )
            for (j=0;j<M;++j)
                a[i][j]=-a[i][j];

        for (i=0;i<M;++i)
        {
            for (j=0,plus=0,minus=0;j<N;++j)
                plus+=a[j][i],minus-=a[j][i];
            sum+= plus>minus ? plus : minus;
        }


        for (i=0;i<N;++i) if ( mask&(1<<i) )
            for (j=0;j<M;++j)
                a[i][j]=-a[i][j];

        ret= sum>ret ? sum : ret;
    }

    return ret;
}

int main()
{
    int i,j;
    freopen(IN,"r",stdin);
    scanf("%d%d",&N,&M);
    for (i=0;i<N;++i)
        for (j=0;j<M;++j)
            scanf("%d",&a[i][j]);
    fclose(stdin);

    freopen(OUT,"w",stdout);
    printf("%d\n",solve());
    fclose(stdout);
    return 0;
}