Cod sursa(job #8329)

Utilizator MAkaveliMakaveli MAkaveli Data 24 ianuarie 2007 17:08:17
Problema Jocul Flip Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<fstream.h>
#include<iomanip.h>
#include<iostream.h>
#include<math.h>
#define NMAX 17
long n,m,tabla[NMAX][NMAX],suma=-1000001;
int x[NMAX];

void citire()
{int i,j;
 fstream f("flip.in",ios::in);
 f>>n>>m;
 for (i=1;i<=n;i++)
   for (j=1;j<=m;j++)
     f>>tabla[i][j];
 f.close(); }

int valid(int k)
{int i,e=1;
 i=1;
 for (i=1;i<k && e;i++) if (x[k]==x[i]) e=0;
 return e; }
 
void verif(int dim)
{int i,j,aux,sum=0,v[NMAX];
 for (i=1;i<=m;i++) v[i]=0;
 for (i=1;i<=dim;i++) v[x[i]]=1;
 for (i=1;i<=n;i++)
   { aux=0;
     for (j=1;j<=m;j++)
      if (v[j]) aux=aux+(-tabla[i][j]);
      else aux=aux+tabla[i][j];
     sum=sum+abs(aux); }
 if (sum>suma) suma=sum;
 }

void rez(int l)
{int i,k,ok;
 k=1;
 x[k]=0;
 while (k>0)
   { ok=0;
     while (!ok && x[k]<m)
       { x[k]++;
         if (valid(k)) ok=1; }
     if (!ok) k--;
     else if (k==l) verif(k);
          else { k++; x[k]=x[k-1]; }
     }
 }

void afisare()
{fstream f("flip.out",ios::out);
 f<<suma;
 f.close();}

int main()
{int i;
 citire();
 for (i=1;i<=m;i++) rez(i);   
 afisare();
 return 0;}