Cod sursa(job #2023819)

Utilizator teodor440Teodor Tonghioiu teodor440 Data 19 septembrie 2017 15:46:29
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>

using namespace std;

ifstream f("flip.in");
ofstream g("flip.out");

int n, m, flip[16][16], sumrow[16], sumcol[16];
long maxsum = -100000000;

struct lista{
    int elem[16], len = 0;
}linii;

void bkt2(int i, long suma){
    if(i >= m){
        if(suma > maxsum) maxsum = suma;
        return;
    }

    bkt2(i+1, suma);

    suma -= 2*sumcol[i];
    for(int j = 0; j < linii.len; j++)
        if(state[j][0]) suma += 4*flip[j][i];
    bkt2(i+1, suma);
}

void bkt1(int i, long suma){
    if(i >= n){
        bkt2(0, suma);
        linii.len--;
        return;
    }

    bkt1(i+1, suma);

    suma -= 2*sumrow[i];
    linii.elem[linii.len++] = i;
    bkt1(i+1, suma);
    linii.len--;
}

int main()
{
    int i, j, suma = 0;
    f >> n >> m;
    for(i = 0; i < n; i++)
        for(j = 0; j < m; j++)
            f >> flip[i][j];
    for(i = 0; i < n; i++)
        for(j = 0; j < m; j++){
            sumrow[i] += flip[i][j];
            sumcol[j] += flip[i][j];
            suma += flip[i][j];
        }

    bkt1(0, suma);

    g << maxsum;

    return 0;
}