Cod sursa(job #97620)

Utilizator mgntMarius B mgnt Data 7 noiembrie 2007 19:17:50
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
using namespace std;

int
main () {
  int const MaxN = 16;
  int const MaxM = 16;
  int n, m, a[MaxN][MaxM], i, j, s[MaxN], sp, sum[MaxN][MaxM], sol, sol1;
  ifstream sin ("flip.in");
  sin >> n >> m;
  for(i=0;i<n;i++) for(j=0;j<m;j++) sin >> a[i][j];
  for(i=1;i<n;i++) s[i]=-1; s[0]=0;
  for(j=0;j<m;j++) sum[0][j]=a[0][j];
  sol=0; for(j=0;j<m;j++) if(0<sum[0][j]) sol+=sum[0][j]; else sol-=sum[0][j];
  sp=1;
  while(1<=sp) {
    if(n == sp) {
      sol1 = 0;
      for(j=0;j<m;j++) if(0<sum[-1+n][j]) sol1+=sum[-1+n][j]; else sol1-=sum[-1+n][j];
      if(sol1>sol) sol=sol1;
      -- sp;
      continue;
    }
    ++ s[sp]; if(2 == s[sp]) {s[sp] = -1; --sp; continue; }
    if(0 == s[sp]) { for(j=0; j<m; j++) sum[sp][j]=sum[-1+sp][j]+a[sp][j]; }
    else { for(j=0;j<m;j++) sum[sp][j]=sum[-1+sp][j]-a[sp][j]; }
    ++ sp;
  }
  ofstream sout("flip.out");
  sout << sol << endl;
  return 0;
}