Cod sursa(job #1830711)

Utilizator adiboierAdi Boier adiboier Data 17 decembrie 2016 00:24:33
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <climits>
using namespace std;
long long x[17][17],maxe=LONG_MIN;
int v[17];
int m,n;
void flip(int k)
{
   for(int i=1;i<=n;i++)
        x[k][i]=0-x[k][i];
}
int main()
{
  ifstream fin("flip.in");
  ofstream fout("flip.out");
  int i,j,k=1,ok;
  long long s,sum=0;
  fin>>m>>n;
  for(i=1;i<=m;i++)
    for(j=1;j<=n;j++)
        fin>>x[i][j];
  v[k]=-1;
  while(k>0)
  {
     ok=0;
     while(v[k]<1&&!ok)
     {
        v[k]++;
       if(v[k]) flip(k);
        ok=1;
     }
     if(ok)
        if(m==k)
        {
            sum=0;
            for(i=1;i<=n;i++)
            {
                s=0;
                for(j=1;j<=m;j++)
                    s+=x[j][i];
                if(s<0) sum=sum-s;
                else sum+=s;
         }
            if(sum>maxe) maxe=sum;
        }
        else
            v[++k]=-1;
        else
        {
            k--;
            if(v[k]) flip(k);
        }
  }
  fout<<maxe;
  return 0;
}