Cod sursa(job #1576116)

Utilizator PraetorGrigorosoaia Florin Praetor Data 22 ianuarie 2016 09:13:19
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include<fstream>

using namespace std;

FILE*in;
ofstream out("flip.out");

long FLIP[18][18];
int nr_lin;
int nr_col;
bool comutator[18]; // pe linii; true inseamna ca este pornit
long suma_maxima;

void read()
{
    in=fopen("flip.in", "r");

    fscanf(in, "%d%d", &nr_lin, &nr_col);

    for (int i=1; i<=nr_lin; i++)
        for (int j=1; j<=nr_col; j++)
            fscanf(in, "%ld", &FLIP[i][j]);
}

void BKT(int step)
{
    if (step == nr_lin+1)
    {
        long suma_matrice=0;

        for (int j=1; j<=nr_col; j++)
        {
            long suma_coloana=0;

            for (int i=1; i<=nr_lin; i++)
                if (comutator[i])
                    suma_coloana+=FLIP[i][j]*(-1);
                else
                    suma_coloana+=FLIP[i][j];

            if (suma_coloana < 0)
                suma_coloana*=-1;

            suma_matrice+=suma_coloana;
        }

        if (suma_matrice > suma_maxima)
            suma_maxima=suma_matrice;
    }
    else
    {
        comutator[step]=false;
        BKT(step+1);
        comutator[step]=true;
        BKT(step+1);
    }
}

void show()
{
    out<<suma_maxima;
}

int main()
{
    read();
    BKT(1);
    show();

    return 0;
}