Cod sursa(job #1402278)

Utilizator IonSebastianIon Sebastian IonSebastian Data 26 martie 2015 14:23:41
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 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 lin(int i)
{
    for(int j = 1; j <= m; j++)
        sol[i][j] *= -1;
}

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 = -INF;
    for(i = 1; i <= n; i++)
        for(j = 1; j <= m; j++)
            fscanf(in, "%d", &mat[i][j]);

    for(i = 0; i < (1 << (n+m)); 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))
                lin(j);
        for(j = n; j < n+m; j++)
            if(i&(1<<j))
                col(j-n);
        for(j = 1; j <= n; j++)
            for(k = 1; k <= m; k++)
                sum += sol[j][k];
        if(sum > rez)
            rez = sum;
    }
    fprintf(out, "%d", rez);
    return 0;
}