Cod sursa(job #789306)

Utilizator slyfer12Damian Alexandru slyfer12 Data 17 septembrie 2012 19:36:28
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>
using namespace std;
int N=3,M,l[16],c[16];long a[16][16],s=0;
   ifstream f("flip.in");
   ofstream g("flip.out");
void col(int k,int q){
  int i,j,x=0;
     if(q==M+1){
      for(i=1;i<=N;i++)
        for(j=1;j<=M;j++)
       if(c[j]){
         if(a[i][j]<0)
       x+=a[i][j];
       else
       x-=a[i][j];}
       else
       x+=a[i][j];
       if(x>s)
       s=x;
     }else
     while(k<2){
       c[q]=k;
         col(0,q+1);
         k++;
     }
}
void undo(){
 int i,j;
  for(i=1;i<=N;i++)
 for(j=1;j<=M;j++)
   if(a[i][j]<0)
  a[i][j]*=-1;
}
void line(int k,int q){
   int i,j,x=0;
    if(q==N+1){
       for(i=1;i<=M;i++)
        {  for(j=1;j<=N;j++)
          if(l[j])
         {a[j][i]=-a[j][i];
          x-=a[j][i];
          }
         else
         x+=a[j][i];
         }
       if(x>s)
       s=x;
       col(0,1);
       undo();
    }
    else
    while(k<2){
       l[q]=k;
         line(0,q+1);
         k++;
     }
}
int main()
{int i,j;
  f>>N>>M;
      for(i=1;i<=N;i++)
      for(j=1;j<=M;j++)
      f>>a[i][j];
      line(0,1);
      g<<"s="<<s;
       return 0;
}