Cod sursa(job #1287871)

Utilizator horiainfoTurcuman Horia horiainfo Data 8 decembrie 2014 10:17:52
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>

using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
long long l[20],c[20],a[17][17],n,m,smax;
void verif()
{
    long long s=0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            s=s+a[i][j]*l[i]*c[j];
    if(s>smax) smax=s;
}
void back(int pl,int pc)
{
    verif();
    for(int i=pl+1;i<=n;i++)
        if(l[i]==1)
        {
            l[i]=-1;
            back(i,pc);
            l[i]=1;
        }
    for(int i=pc+1;i<=m;i++)
        if(c[i]==1)
        {
            c[i]=-1;
            back(pl,i);
            c[i]=1;
        }
}
void sume()
{
    for(int i=1;i<=n;i++)
    {
        l[i]=1;
        for(int j=1;j<=m;j++)
            a[i][0]+=a[i][j];
    }
    for(int i=1;i<=m;i++)
    {
        c[i]=1;
        for(int j=1;j<=n;j++)
            a[0][i]+=a[j][i];
    }
}
int main()
{
    fin>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            fin>>a[i][j];
    sume();
    back(0,0);
    fout<<smax<<'\n';
    return 0;
}