Cod sursa(job #1044324)

Utilizator MarghescuGabriel Marghescu Marghescu Data 29 noiembrie 2013 16:59:19
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.57 kb
#include<fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
struct matrice{
    int a[17][17];
};
matrice a,b;
int n,m,k,x[17],smax=-1000000000;
void init()
{
    x[k]=-3;
}
int succesor()
{
    x[k]+=2;
    if(x[k]<=1)
        return 1;
    else
        return 0;
}
int sol()
{
    return (k==n);
}
int valid()
{
    return 1;
}
void back()
{
        int as;
        k=1;
        init();
        while(k>0)
        {
            while((as=succesor())&& !valid());
            if(!as) k--;
            else
            {
                if(sol())
                {
                    b=a;
                    int s=0;
                    for(int j=1;j<=m;j++)
                    {
                        int s1=0;
                        for(int i=1;i<=n;i++)
                        {
                            b.a[i][j]=b.a[i][j]*x[i];
                            s1+=b.a[i][j];
                        }
                        if(s1<0)
                            s-=s1;
                        else
                            s+=s1;
                    }
                    if(s>smax)
                        smax=s;
                }
                else
                {
                    k++;
                    init();
                }
            }
        }
}
int main()
{
    f>>n>>m;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            f>>a.a[i][j];
        }
    }
    back();
    g<<smax;
    f.close();
    g.close();
    return 0;
}