Cod sursa(job #2614486)

Utilizator pavelandrei17Pavel Andrei-Gabriel pavelandrei17 Data 11 mai 2020 20:16:58
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <fstream>

using namespace std;

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

int A[17][17],st[17],k,n,m,as,ev,maxim=0,S;

void citire()
{
    f>>n>>m;
    int i,j;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            f>>A[i][j];
}

int succesor()
{
    if(st[k]<2)
    {
        st[k]++;
        return 1;
    }
    else return 0;
}

int solutie()
{
    if(k==n) return 1;
    else return 0;
}

int suma()
{
    int i,j,suma_coloana,suma_totala=0;
    for(i=1;i<=m;i++)
    {
        suma_coloana=0;
        for(j=1;j<=n;j++)
            if(st[j]==2)
                suma_coloana -=A[j][i];
            else
                suma_coloana +=A[j][i];

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

        suma_totala+=suma_coloana;
    }
    return suma_totala;
}

void bck()
{
    k=1;
    st[k]=0;

    while(k>0)
    {
        as=succesor();

        if(as==1)
        {
            if(solutie()==1)
            {

                S=suma();
                if(maxim<S)
                    maxim=S;
            }
            else
            {
                k++;
                st[k]=0;
            }
        }

        else k--;
    }
}

int main()
{

    citire();
    bck();
    g<<maxim;
    f.close();
    g.close();
    return 0;
}