Cod sursa(job #1014395)

Utilizator mucenic_b101Bogdan Mucenic mucenic_b101 Data 22 octombrie 2013 17:21:36
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <cstdio>

int a[17][17];

bool v[17];

void comut( int m) {
    int i,j;

    for( i = 0; i < 17; ++i)
        if( v[i] == 1 )
            for( j = 0; j < m; ++j )
                a[i][j] *= -1;
}

int main () {
    FILE *f, *g;
    f = fopen( "flip.in", "r" );
    g = fopen( "flip.out", "w" );

    int n, m, i, j, p, ci, poz, s, z, s1, s2, max = -1;
    fscanf( f, "%d%d", &n, &m );
    for( i = 0; i < n; ++i)
        for( j = 0; j < m; ++j )
            fscanf( f, "%d", &a[i][j] );
    p = 1 << n;
    for( z = 1; z < p; ++z)
    {
        ci = z;
        poz = 0;
        for( i = 0; i < 17; ++i )
            v[i] = 0;
        while( ci )
        {
            if( ci & 1) v[poz] = 1;
            ++poz;
            ci >>= 1;
        }
        comut( m );
        s = 0;
        for( j = 0; j < m; ++j ){
            s1 = s2 = 0;
            for( i = 0; i < n; ++i ){
                s1 += a[i][j];
                s2 += ( a[i][j] * -1 );
            }
            s += s1 > s2 ? s1 : s2;
        }
        if( s > max )
            max = s;
        comut( m );
    }

    fprintf( g, "%d\n", max );

    fclose( f );
    fclose( g );
    return 0;
}