Cod sursa(job #770020)

Utilizator ionut_blesneagIonut Blesneag ionut_blesneag Data 21 iulie 2012 18:19:43
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<fstream>
using namespace std;

int n,m, a[20], b[20], v[20],w[20];
long mat[20][20];
long long maxim,sum;

ifstream f("flip.in");
ofstream g("flip.out");

void transforma()
{ sum=0;
  for(int j=1; j<=n; j++)
    for(int s=1; s<=m; s++)
      if(v[j]*w[s]==0 && (v[j]!=0 || w[s]!=0))
        sum+=mat[j][s]*(-1);
      else
        sum+=mat[j][s];  
 if(maxim<sum)
   maxim=sum;

 }

void bkty(int y)
{for(int k=b[y-1]+1; k<=m; k++)
    if(!w[k])
      {b[y]=k;
       w[k]=1;   
       bkty(y+1);
       w[k]=0;
       b[y]=0;
      }
 transforma();      
}

void bktx (int x)
{      
 for(int i=a[x-1]+1; i<=n; i++)
    if(!v[i])
      {a[x]=i;
       v[i]=1;   
       bktx(x+1);
       v[i]=0;
       a[x]=0;
      }
  bkty(1);     
}       

int main()
{
f>>n>>m;
for(int i=1; i<=n; i++)
  for(int j=1; j<=m; j++)
    f>>mat[i][j];
bktx(1);    
g<<maxim;    
return 0;}