Cod sursa(job #2036269)

Utilizator eragon0502Dumitrescu Dragos eragon0502 Data 10 octombrie 2017 16:03:43
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <cstdio>

using namespace std;

int a[17][17],tmp[17][17],m;

void swp(int i)
{
    for(int j=1;j<=m;++j)
        tmp[i][j]*=(-1);
}

int main()
{
    freopen("flip.in","r",stdin);
    freopen("flip.out","w",stdout);
    int n,ok,smax=0;

    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;++i)
        for(int j=1;j<=m;++j)
            scanf("%d",&a[i][j]);

    for(int z=0;z<(1<<16);++z)
    {

        for(int k=1;k<=n;++k)
            for(int j=1;j<=m;++j)
                tmp[k][j]=a[k][j];

        int c=0;
        for(int m=1;m<(1<<16);m=m<<1)
        {
            ++c;
            if((m&z)>0)
            swp(c);
        }

        int s;
        ok=0;
        while(ok==0)
        {
            ok=1;
            for(int i=1;i<=m;++i)
            {
                s=0;
                for(int j=1;j<=n;++j)
                    s+=tmp[j][i];
                if(s<0){
                    ok=0;
                    for(int j=1;j<=n;++j)
                        tmp[j][i]=-tmp[j][i];
                    }
            }
        }

        s=0;
        for(int i=1;i<=n;++i)
            for(int j=1;j<=m;++j)
                s+=tmp[i][j];

        if(s>smax)
            smax=s;
    }





    printf("%d",smax);

    return 0;
}