Cod sursa(job #899016)

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

using namespace std;

long int maxim=-1.e20;
vector <long int> g[17],v; 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; g[i].push_back(x);}
}

long int Back(long int k)
{
    long int suma,aux=0;
    if(k==n)
    {
        suma=0;

        //Mergem pe coloana
        for(int i=0;i<m;i++)
        {
            aux=0;
            for(int j=0;j<n;j++)
                aux+=(g[j][i]*v[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
    v.push_back(1);
    Back(k+1);
    v.pop_back();
    v.push_back(-1);
    Back(k+1);
    v.pop_back();
}

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