Cod sursa(job #1511078)

Utilizator cristinamateiCristina Matei cristinamatei Data 26 octombrie 2015 00:04:59
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n, m, smax, a[17][17], sol[17];

void solutie( int p )
{
    int i, j;
    int s = 0, su = 0;
    for ( i = 1; i <= n; i++ )
    {
        for ( j = 1; j <= m; j++ )
            if ( sol[i] == 1 )
                a[i][j] = -a[i][j];
    }

    for ( j = 1; j <= m; j++ )
    {
        su = 0;
        for ( int i = 1; i <= n; i++ )
            su+=a[i][j];
        if ( su < 0 )
            s-=su;
        else s+=su;
    }

    if ( s > smax )
        smax = s;
    for ( i = 1; i <= n; i++ )
    {
        for ( j = 1; j <= m; j++ )
            if ( sol[i] == 1 )
                a[i][j] = -a[i][j];
    }
}

void bkt( int p )
{
    if ( p == n+1 )
        solutie(p);
    else
    {
            sol[p] = 0;
            bkt(p+1);
            sol[p] = 1;
            bkt(p+1);
    }
}

int main()
{
    in >> n >> m;
    for ( int i = 1; i <= n; i++ )
        for ( int j = 1; j <= m; j++ )
        {
            in >> a[i][j];
            smax+=a[i][j];
        }
    bkt(1);
    out << smax;
    cout << smax;
    return 0;
}