Cod sursa(job #1586685)

Utilizator Iri00FII Irinel Manolache Iri00 Data 1 februarie 2016 16:24:28
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul II Marime 0.89 kb
#include <stdio.h>

#define Nmax 16

int N,M,A[Nmax][Nmax],x[Nmax],y[Nmax],BestSum;


void citire()
{int i,j;
 freopen("flip.in","r",stdin);

 scanf("%d%d",&N,&M);

 for(i = 1; i <= N; ++i)
    for(j = 1; j <= M; ++j)
        scanf("%d",&A[i][j]);




}


void Sol()
{
 int sum=0,sgn;
 int i,j;
 for(i=1;i<=N;++i)
    {sgn=1;
     if(x[i]==2)
            sgn*=-1;
     for(j=1;j<=M;++j)
        {
         if(y[j]==2)
            sgn*=-1;
         sum+=sgn*A[i][j];
         }
    }
 if(BestSum<sum)
    BestSum=sum;
}

void Bck2(int k)
{int i;
 for(i=1;i<=2;++i)
 {y[k]=i;
  if(k<M) Bck2(k+1);
  if(k==M) Sol();
 }
}


void Bck1(int k)
{int i;
 for(i=1;i<=2;++i)
 {x[k]=i;
  if(k<N) Bck1(k+1);
  if(k==N) Bck2(1);
 }
}


int main()
{
    freopen("flip.out","w",stdout);
    citire();
    Bck1(1);
    printf("%d",BestSum);
    return 0;
}