Cod sursa(job #710427)

Utilizator mihaim1980Test Test mihaim1980 Data 9 martie 2012 17:15:35
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include<fstream>
using namespace std;

 short n,m;
int ST[100];
short k;
bool as,ev;
 ifstream f("flip.in");
 ofstream g("flip.out");
long long int suma=0,suma1=0,smax=0,M[16][16];

void init()
{
    ST[k]=-1;

}

void succ()
{
    if(ST[k]<1)
    {
        ST[k]++;
    as=1;
    }
  else as=0;
}

void valid()
{

    suma1=0;
    if(k==n)
  {
      for(int j=1;j<=m;j++)
      {
          suma=0;
          for(int i=1;i<=n;i++)
          {
              if(ST[i]==0)
              suma+=M[i][j];
              else suma-=M[i][j];
          }
          if(suma>0)
             suma1+=suma;
             else suma1-=suma;
      }
    }
ev=1;
}

void tipar()
{

    if(suma1>smax)
    smax=suma1;
}

int sol()
{
    return (k==n);

}

void back()
{
    k=1;
  init();
    while(k)
{
   do{
     succ();
      if(as)
         valid();
   }
   while(as && !ev);

if(as)
if(sol())
tipar();
else{
k++;
init();
}
    else k--;

    }
}

int main()
{
    f>>n>>m;
 for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
   f>>M[i][j];

 back();

    g<<smax;

  f.close();
  g.close();
  return 0;
}