Cod sursa(job #1614827)

Utilizator TudorFinaruTudor Cristian Finaru TudorFinaru Data 26 februarie 2016 10:01:36
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int a[17][17],v[33],maxi,n,m,i,s[33],u[33];

void calcul()
{
    int j,i,suma=0;
    for(i=1;i<=n+m;i++) u[i]=v[i];
    for(i=1;i<=n+m;i++)
    {
        if(s[i]==-1)
        {
            if(i<=n)
            {
                u[i]=-v[i];
                for(j=n+1;j<=m+n;j++)
                    u[j]=u[j]-a[i][j-n];

            }
            else
            {
                u[n+i]=-v[n+i];
                for(j=1;j<=n;j++)
                    u[j]=u[j]-a[j][i-n];
            }
        }
    }
    for(i=1;i<=n;i++) suma+=u[i];
    if(suma>maxi) maxi=suma;
}

void backtr(int k)
{
    int i;
    for(i=-1;i<=0;i++)
    {
        s[k]=i;
        if(k==n+m) calcul();
        else backtr(k+1);
    }
}

int main()
{
    f>>n>>m; int j;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        {
            f>>a[i][j];
            v[i]+=a[i][j];
            v[n+j]+=a[i][j];
        }
    backtr(1);
    g<<maxi<<'\n';
    f.close();
    g.close();
    return 0;
}