Cod sursa(job #957528)

Utilizator rzvrzvNicolescu Razvan rzvrzv Data 5 iunie 2013 12:07:07
Problema Jocul Flip Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<cstdio>

using namespace std;

long long n,m,i,j,mx,f[20],a[20][20];

int iabs(long long x)
{
    if(x<0)
        return (-x);
    return x;
}

void fliplin()
{
    int i,j;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            if(f[i]==1)
                a[i][j]*=-1;
        }
    }
}

void verif()
{
    int sum,i,j,sumcol;
    fliplin();
    sum=0;
    for(i=1;i<=m;i++)
    {
        sumcol=0;
        for(j=1;j<=n;j++)
        {
            sumcol+=a[j][i];
        }
        sum+=iabs(sumcol);
    }
    if(sum>mx)
        mx=sum;
    fliplin();
}

void back(long long k)
{
    int i;
    if(k>n)
    {
        verif();
    }
    else
    for(i=0;i<=1;i++)
    {
        f[k]=i;
        back(k+1);
    }
}

int main()
{
    freopen("flip.in","r",stdin);
    freopen("flip.out","w",stdout);
    scanf("%lld%lld",&n,&m);
    mx=0;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            scanf("%lld",&a[i][j]);
        }
    }
    back(1);
    printf("%lld\n",mx);
    return 0;
}