Cod sursa(job #652421)

Utilizator veleanduAlex Velea veleandu Data 24 decembrie 2011 13:48:15
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include<iostream>
#include<fstream>
using namespace std;

ifstream in("flip.in");
ofstream out("flip.out");

long n,m,T[20][20],L[25],P[25];
long i,j,mx=0;

void bt ( long k )
{
    long i,j,s=0,s2=0;
    if ( k == n )
    {
        for ( i=1; i<=n; ++i )
            if ( L[i]==1 )
                for ( j=1; j<=m; ++j )
                    T[i][j]*=-1;
        for ( j=1; j<=m; ++j )
        {
            s=0;
            for ( i=1; i<=n; ++i )
                s+=T[i][j];
            if ( s<0 )
                s2-=s;
            else
                s2+=s;
        }
        /*for ( i=1; i<=n; ++i,cout<<"\n" )
                for ( j=1; j<=m; ++j )
                    cout<<T[i][j]<<" ";
            cout<<"\n"<<s2<<"\n\n";*/
        if ( s2>mx )
        {

            mx=s2;
        }

        for ( i=1; i<=n; ++i )
            if ( L[i]==1 )
                for ( j=1; j<=m; ++j )
                    T[i][j]*=-1;
    }
    else{
        L[k+1]=0;
        bt(k+1);
        L[k+1]=1;
        bt(k+1);
    }
}

int main()
{
    in>>n>>m;
    for ( i=1; i<=n; ++i )
        for ( j=1; j<=m; ++j )
            in>>T[i][j];
    bt ( 0 );
    out<<mx;
    return 0;
}