Cod sursa(job #899066)

Utilizator TwistedFaithStanescu Jean Alexandru TwistedFaith Data 28 februarie 2013 12:46:06
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>
#include <vector>

using namespace std;

long int Maxim = -1.e20;
vector <long int> Matrice[17], VectComb ; int N, M;

ifstream fin("flip.in");
ofstream fout("flip.out");

void Citire()
{
    int x;
    fin >> N >> M;
    for(int i = 0; i < N; i++)
        for(int j = 0; j < M; j++)
            {fin >> x; Matrice[i].push_back(x);}
}

long int Back(long int Contor)
{
    long int Suma, aux=0;
    if (Contor==N)
    {
        Suma=0;

        /* Mergem pe coloana */
        for (int i = 0; i < M; i++)
        {
            aux = 0;
            for (int j = 0; j < N; j++)
                aux += (Matrice[j][i]*VectComb[j]);

            /* Punem suma in modul pt a nu mai fi nevoiti sa inmultim si liniile cu -1 */
            if (aux < 0) Suma = Suma-aux;
            else Suma = Suma + aux;
        }
        if(Maxim < Suma) Maxim = Suma;
        return 0;
    }

    /* Luam toate variantele (inmultit cu 1/-1) pentru coloane */

    VectComb.push_back(1);

    Back(Contor+1);
    VectComb.pop_back();

    VectComb.push_back(-1);

    Back(Contor+1);
    VectComb.pop_back();
}

int main()
{
    Citire();
    Back(0);
    fout<<Maxim;
}