Cod sursa(job #1283338)

Utilizator marian98Horodnic Gheorghe Marian marian98 Data 5 decembrie 2014 15:55:38
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.49 kb
#include<iostream>
#include<fstream>
using namespace std;
long T[17][17],n,m,maxim=-1000000;
int linii[17],coloane[17];
void bkt2()
{
    int k=1;
    coloane[k]=-1;
    while(k)
        if (coloane[k]<1)
        {
            coloane[k]++;
            if (k==m)
            {
                long s=0;
                for (unsigned i=1;i<=m;i++)
                    for (unsigned j=1;j<=n;j++)
                    {
                        if (coloane[i]==1) T[j][i]*=(-1);
                        s+=T[j][i];
                    }
                if (maxim<s) maxim=s;
            }
            else
            {
                k++;
                coloane[k]=-1;
            }
        }
        else k--;
}
void bkt()
{
    int k=1;
    linii[k]=-1;
    while(k)
        if (linii[k]<1)
        {
            linii[k]++;
            if (k==n)
            {
                for (unsigned i=1;i<=n;i++)
                    for (unsigned j=1;j<=m;j++)
                        if (linii[i]==1) T[i][j]*=(-1);
                bkt2();
                //cout<<maxim<<" ";
            }
            else
            {
                k++;
                linii[k]=-1;
            }
        }
        else k--;
}
int main()
{
    ifstream f("flip.in");
    ofstream f1("flip.out");
    f>>n>>m;
    for (unsigned i=1;i<=n;i++)
        for (unsigned j=1;j<=m;j++)
            f>>T[i][j];
    bkt();
    //cout<<"suma maxima: "<<maxim;
    f1<<maxim;
    return 0;
}