Cod sursa(job #1494990)

Utilizator armandpredaPreda Armand armandpreda Data 2 octombrie 2015 11:19:11
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>

using namespace std;

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

int n, m, mat[20][20], cop[20][20], s, s_cop, s_max;
void bt()
{
    for(unsigned i=0; i<(1<<(m+n)); ++i)
    {
        int nr_bit=1;
        for(unsigned mask=1; mask<=i; mask<<=1, ++nr_bit)
            if(i&mask)
                if(nr_bit<=n)
                    for(int j=1; j<=m; ++j)
                    {
                        s=s-2*mat[nr_bit][j];
                        mat[nr_bit][j]*=-1;
                    }
                else
                    for(int j=1; j<=n; ++j)
                    {
                        s=s-2*mat[j][nr_bit-n];
                        mat[j][nr_bit-n]*=-1;
                    }
        if(s_max<s) s_max=s;
        for(int j=1; j<=n; ++j)
            for(int k=1; k<=m; ++k)
                mat[j][k]=cop[j][k];
        s=s_cop;
    }
}
int main()
{
    cin>>n>>m;
    for(int i=1; i<=n; ++i)
        for(int j=1; j<=m; ++j)
        {
            cin>>mat[i][j];
            s+=mat[i][j];
            cop[i][j]=mat[i][j];
        }
    s_cop=s;
    bt();
    cout<<s_max;
    return 0;
}