Cod sursa(job #1470076)

Utilizator mihalut.filipMihalut Filip mihalut.filip Data 10 august 2015 12:56:26
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("flip.in");
ofstream g ("flip.out");
int a[21][21],S,i,j,m,n,st[100],k,cop,i1,Max,b[21][21],distinct;
void citire()
{
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
        {
            f>>a[i][j];
            S=S+a[i][j];
        }
}
bool bun()
{
    if(k==n+m)
        return true;
    return false;
}
void afisare()
{
    cop=S;
    distinct++;
    for(i=1; i<=k; i++)
    {
        if(i<=n&&st[i]==1)
        {
            for(j=1; j<=m; j++)
                {
                    S=S+a[i][j]*-2;
                    b[i][j]=distinct;
                }

        }
        else
        if(st[i]==1)
        {
            for(i1=1; i1<=n; i1++)
                if(b[i][j]!=distinct)
                S=S+a[i1][i-n]*-2;
                else
                S=S+a[i1][i-n]*2;
        }
    }
    Max=max(S,Max);
    S=cop;
}
void BKT()
{
    k=1;
    while(k)
    if(st[k]<2)
    {
        st[k]++;
        if(bun())
            afisare();
        else
            k++;
    }
    else
    {
        st[k]=0;
        k--;
    }

}
int main()
{
    f>>m>>n;
    citire();
    BKT();
    g<<Max<<" ";
    return 0;
}