Cod sursa(job #1727480)

Utilizator RG1999one shot RG1999 Data 10 iulie 2016 22:17:05
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <cstdio>

using namespace std;
int l[33],lin[17],col[17],i,j,n,m,pas,ok,nr,s,max1,a[17][17],z;
int valid(int x,int y)
{
    for(int i=1;i<y;i++)
        if(l[i]==x) return 0;
    return 1;
}
int main()
{
    freopen("flip.in","r",stdin);
    freopen("flip.out","w",stdout);
    pas=1;
    nr=1;
    max1=-999999;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        scanf("%d",&a[i][j]);
    while(pas)
    {
        ok=0;
        while(!ok&&l[pas]<n+m)
        {
            l[pas]++;
            if(valid(l[pas],pas))
                ok=1;
        }
        if(ok==0)
            pas--;
        else
        {
            s=0;
            for(i=1;i<=pas;i++)
                if(l[i]>n)
                col[l[i]-n]=nr;
                else
                    lin[l[i]]=nr;
                for(i=1;i<=n;i++)
                    for(j=1;j<=m;j++)
                    {
                        if(lin[i]==nr&&col[j]!=nr)
                        s-=a[i][j];
                        else
                             if(lin[i]!=nr&&col[j]==nr)
                            s-=a[i][j];
                        else
                            s+=a[i][j];


                    }
               if(s>max1)
                        max1=s;
              if(pas<n+m)
              {
                  pas++;
                  l[pas]=0;
              }

        }
        nr++;
    }
    printf("%d",max1);
    return 0;
}