Cod sursa(job #952152)

Utilizator gabrielvGabriel Vanca gabrielv Data 22 mai 2013 19:25:10
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
#define NMAX 20
#define maxim(a,b) ((a>b)?(a):(b))

using namespace std;

long long m[NMAX][NMAX],a[2*NMAX],N,M,Sol;

void citire()
{
	freopen("flip.in","r",stdin);
    scanf("%lld %lld",&N,&M);
    long long i,j;
    for(i=1;i<=N;i++)
        for(j=1;j<=M;j++)
            scanf("%lld",&m[i][j]);
}

long long sum()
{
    long long i,j,S=0,Saux;
	for(j=1;j<=M;j++)
	{
		Saux=0;
		for(i=1;i<=N;i++)
			if(a[i])
				Saux+=m[i][j];
			else
				Saux-=m[i][j];
		if(Saux<0)
			S-=Saux;
		else
			S+=Saux;
	}
    return S;
}

void solve()
{
    long long i,j,aux;
    for(i=(1<<N)-1;i>=0;i--)
    {
        for(j=1,aux=i;j<=N;a[j++]=aux&1,aux>>=1);
        Sol=maxim(Sol,sum());
    }
}

void afisare()
{
    freopen("flip.out","w",stdout);
    printf("%lld\n",Sol);
}

int main()
{
    citire();
    solve();
    afisare();
    return 0;
}