Cod sursa(job #952217)

Utilizator primulDarie Sergiu primul Data 22 mai 2013 21:28:52
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 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;
}