Cod sursa(job #1672299)

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

# define MAXN 16

int mat[MAXN][MAXN];
long long l[MAXN], c[MAXN];


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

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

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

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

    do {
        i = 0;
        while ( i < n && l[i] >= 0 )
            i ++;

        if ( i < n ) {
            l[i] *= -1;
            for ( j = 0; j < m; j ++ ) {
                c[j] -= 2 * mat[i][j];
                mat[i][j] *= -1;
            }
        }

        j = 0;
        while ( j < m && c[j] >= 0 )
            j ++;

        if ( j < m ) {
            c[j] *= -1;
            for ( i = 0; i < n; i ++ ) {
                l[i] -= 2 * mat[i][j];
                mat[i][j] *= -1;
            }
        }
    } while ( i < n || j < m );

    s = 0;
    for ( i = 0; i < n; i ++ )
        s += l[i];
    fprintf( fout, "%lld\n", s );

    fclose( fin );
    fclose( fout );

    return 0;
}