Cod sursa(job #1720761)

Utilizator denniscrevusDennis Curti denniscrevus Data 23 iunie 2016 14:32:57
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>
#include <algorithm>
#define NMAX 17

using namespace std;

int n,m,p,a[NMAX][NMAX],i,j,x,r[17],q,put,y,aux,l,s1,s2,s,cnt,k;
long long sumtot=-9999999999,sumF,sum,sumfin;

void flipL(int x)
{
    for(k=1;k<=m;k++)
    {
        a[x][k]=-a[x][k];
    }
}

void flipC(int x)
{
    for(k=1;k<=n;k++)
        a[k][x]=-a[k][x];
}

void Greedy()
{
    sumfin=0;
    for(i=1;i<=m;i++)
    {
        sum=0;
        sumF=0;
        for(j=1;j<=n;j++)
            {
                sum=sum+a[j][i];
                sumF=sumF-a[j][i];
            }
        sumfin=sumfin+max(sum,sumF);
    }
    sumtot=max(sumtot,sumfin);
}

int main()
{
    ifstream f("flip.in");
    ofstream g("flip.out");

    f>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            f>>a[i][j];

    put=(1<<n);

    for(y=0;y<put;y++)
    {
        aux=y;

        for(i=0;i<=16;i++)
            if(((y>>i)&1)==1)
            {
                flipL(i+1);
            }

        Greedy();

        for(i=0;i<=16;i++)
        {
            if(((aux>>i)&1)==1)
                flipL(i+1);
        }
    }
    g<<sumtot;

}