Cod sursa(job #1131820)

Utilizator rypseeSorin Vladu rypsee Data 1 martie 2014 17:16:43
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<cstdio>
#define NMAX 17

using namespace std;

int n,m,a[NMAX][NMAX],b[NMAX][NMAX],x[2*NMAX],sum,maxim=0;

int suma()
{
    sum=0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            sum+=a[i][j];
    return sum;
}

void init()
{
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            b[i][j]=a[i][j];
}

void solve()
{
    for(int i=1;i<=m+n;i++)
    {
        if(i<=n&&x[i])
            for(int k=1;k<=m;k++)
                b[i][k]=-b[i][k];
        if(i>n&&x[i])
            for(int k=1;k<=m;k++)
                b[k][i-n]=b[k][i-n];
    }
    if(maxim<suma())
        maxim=suma();
    init();
}

void back(int k)
{
    if(k>n+m)
        solve();
    else
    {
        x[k]=1;
        back(k+1);
        x[k]=0;
        back(k+1);
    }
}

int main()
{
    freopen("flip.in","r",stdin);
    freopen("flip.out","w",stdout);

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

    back(1);
    printf("%d",maxim);

    return 0;
}