Cod sursa(job #1402307)

Utilizator IonSebastianIon Sebastian IonSebastian Data 26 martie 2015 14:41:13
Problema Jocul Flip Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <cstdio>

using namespace std;

FILE *in, *out;

const int MAX_N = 16, MAX_M = 16;
//const long long INF = MAX_N*MAX_M*1e9;

int mat[MAX_N+1][MAX_M+1], sol[MAX_N+1][MAX_M+1];

int n, m;

void col(int j)
{
    for(int i = 1; i <= n; i++)
        sol[i][j] *= -1;
}

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

    fscanf(in, "%d%d", &n, &m);
    int i, j, k;
    long long sum = 0, rez = 0;
    long long slin = 0;
    for(i = 1; i <= n; i++)
        for(j = 1; j <= m; j++)
            fscanf(in, "%d", &mat[i][j]);

    for(i = 0; i < (1 << n); i++)
    {
        sum = 0;
        for(j = 1; j <= n; j++)
            for(k  = 1; k <= m; k++)
                sol[j][k] = mat[j][k];
        for(j = 0; j < n; j++)
            if(i&(1<<j))
                col(j);
        for(j = 1; j <= n; j++)
        {
            slin = 0;
            for(k = 1; k <= m; k++)
                slin += sol[j][k];
            if(slin < 0) slin *= -1;
            sum += slin;
        }
        if(sum > rez)
            rez = sum;
    }
    fprintf(out, "%d", rez);
    return 0;
}