Cod sursa(job #1180784)

Utilizator hrazvanHarsan Razvan hrazvan Data 1 mai 2014 10:04:23
Problema Jocul Flip Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <stdio.h>
#define NM_MAX 16
char lin[ NM_MAX ];
int  ma[ NM_MAX ][ NM_MAX ];

int max ( int a, int b ){
    if ( a > b )    return a;
    return b;
}

int solve ( int n, int m ){
    int i, j, sum, sumtot = 0;
    for ( i = 0; i < m; i++ ){
        sum = 0;
        for ( j = 0; j < n; j++ ){
            sum += ma[ j ][ i ] * lin[ j ];
        }
        if ( sum < 0 )  sumtot += -sum;
        else  sumtot += sum;
    }
    return sumtot;
}

int bkt ( int n, int m, int pas ){
    int a, b;
    if ( pas == n - 1 ){
        lin[ pas ] = -1;
        a = solve ( n, m );
        lin[ pas ] = 1;
        b = solve ( n, m );
        return max ( a, b );
    }
    lin[ pas ] = -1;
    a = bkt ( n, m, pas + 1 );
    lin[ pas ] = 1;
    b = bkt ( n, m, pas + 1 );
    return max ( a, b );
}

int main()
{
    FILE *in = fopen ( "flip.in", "r" );
    int n, m;
    fscanf ( in, "%d%d", &n, &m );
    int i, j;
    for ( i = 0; i < n; i++ ){
        for ( j = 0; j < m; j++ ){
            fscanf ( in, "%d", &ma[ i ][ j ] );
        }
    }
    fclose ( in );
    int rez = bkt ( n, m, 0 );
    FILE *out = fopen ( "flip.out", "w" );
    fprintf ( out, "%d", rez );
    fclose ( out );
    return 0;
}