Cod sursa(job #1045251)

Utilizator calin13Calin Nicolau calin13 Data 1 decembrie 2013 09:55:04
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
/* 
 * File:   flip.cpp
 * Author: calin
 *
 * Created on December 1, 2013, 9:25 AM
 */
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

int
main ()
{
  ifstream f ("flip.in");
  ofstream g ("flip.out");
  int n, m, a[17][17], i, j;
  vector<int>l, c;
  f >> n >> m;
  for(i = 0; i < n; ++i)
    for(j = 0; j < m; ++j)
      f >> a[i][j];
  
  int ans = 0;
  l.push_back(-1);
  while(!l.empty())
    {
      if (l.size() > n)
        {
          c.push_back (-1);
          while(!c.empty())
            {
              if (c.size() > m)
                {
                  int sum = 0;
                  for(i = 0; i < n; i++)
                    for(j = 0; j < m; j++)
                      if (l[i] && !c[j] || c[j] && !l[i])
                        sum += -a[i][j];
                      else
                        sum += a[i][j];
                    if (sum > ans)
                        ans = sum;
                    c.pop_back();
                }
              else
                if (c.back() < 1)
                  {
                    ++c.back();
                    c.push_back(-1);
                  }
                else
                  c.pop_back();
            }
          l.pop_back();
        }
      else
        if (l.back() < 1)
          {
            ++l.back();
            l.push_back(-1);
          }
        else
          l.pop_back();
    }
  g << ans;
  f.close ();
  g.close ();
  return 0;
}