Cod sursa(job #1672322)

Utilizator Tiberiu02Tiberiu Musat Tiberiu02 Data 2 aprilie 2016 16:26:56
Problema Jocul Flip Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.95 kb
# include <stdio.h>
# include <stdlib.h>

# define MAXN 16

int mat[MAXN][MAXN];

inline long long maxSum( int mat[MAXN][MAXN], int n, int m, int lin ) {
    int i, j;
    long long s, c;

    s = 0;
    for ( j = 0; j < m; j ++ ) {
        c = 0;
        for ( i = 0; i < n; i ++ )
            c += mat[i][j] * (1 - 2 * ( ( lin >> i ) & 1 ) );

        if ( c >= 0 )
            s += c;
        else
            s -= c;
    }

    return s;
}

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

    int n, m, i, j;
    long long s, max;

    fscanf(fin, "%d%d", &n, &m );

    for ( i = 0; i < n; i ++ )
        for ( j = 0; j < m; j ++ ) {
            fscanf( fin, "%d", &mat[i][j] );
        }

    max = 0;
    for ( i = 0; i < ( 1 << n ); i ++ ) {
        s = maxSum( mat, n, m, i );
        if ( s > max )
            max = s;
    }
    fprintf( fout, "%lld\n", max );

    fclose( fin );
    fclose( fout );

    return 0;
}