Cod sursa(job #672282)

Utilizator firewavesBirsu Ion firewaves Data 1 februarie 2012 20:28:11
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<fstream>
using namespace std;

int a[20][20], n, m, st[20], i, j, k, s, s2, smax=0;

void init()
{st[k]=0;}

int succesor()
{if(st[k]==0)
    {st[k]=-1; return 1;}
else if(st[k]==-1)
    {st[k]=1; return 1;}
else
    return 0;
}

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

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

void bkt()
{int as=0;
k=1;
init();
while(k>0)
{do{}while((as=succesor()) && !valid());
if(as)
    if(solutie())
        {s=0;
        for(j=1;j<=m;j++)
            {s2=0;
            for(i=1;i<=n;i++)
                s2+=a[i][j]*st[i];
            if(s2<0)
                s-=s2;
            else
                s+=s2;
            }
        if(s>smax)
            smax=s;
        }
    else
        {k++; init();}
else
    k--;
}
}

int main()
{ifstream f("flip.in");
f>>n>>m;
for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
        f>>a[i][j];
f.close();
bkt();
ofstream g("flip.out");
g<<smax;
g.close();
return 0;
}