Cod sursa(job #1886671)

Utilizator dumitrescu_andreiDumitrescu Andrei dumitrescu_andrei Data 21 februarie 2017 02:02:08
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int a[17][17];
short n,m,dx[17],dy[17];
long long smin;

void citire()
{
    f>>n>>m;
    for(int i=1;i<=n;++i)
        for(int j=1;j<=m;++j)
        f>>a[i][j];
    smin=0;
}

void verificare()
{
    long long s=0;
    for(int i=1;i<=n;++i)
        for(int j=1;j<=m;++j)
         s+=(a[i][j]*dx[i]*dy[j]);
    if(s>smin)
        smin=s;
}

void BKTR(int k,int k1)
{
   if(k==n+1 && k1==m+1)
    verificare();
   else
   {
       if(k<=n && k1<=m)
       {
           dx[k]=-1;
           dy[k1]=-1;
           BKTR(k+1,k1+1);
           dx[k]=-1;
           dy[k1]=1;
           BKTR(k+1,k1+1);
           dx[k]=1;
           dy[k1]=-1;
           BKTR(k+1,k1+1);
           dx[k]=1;
           dy[k1]=1;
           BKTR(k+1,k1+1);
       }
       else if(k1<=m && k==n+1)
       {
           dy[k1]=-1;
           BKTR(k,k1+1);
           dy[k1]=1;
           BKTR(k,k1+1);
       }
       else if(k1==m+1 && k<=n)
       {
           dx[k]=-1;
           BKTR(k+1,k1);
           dx[k]=1;
           BKTR(k+1,k1);
       }
   }



}

int main()
{
citire();
BKTR(1,1);
g<<smin;

}