Cod sursa(job #52931)

Utilizator ada_sAda-Mihaela Solcan ada_s Data 20 aprilie 2007 12:58:21
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>

std::ifstream f1("flip.in");
std::ofstream f2("flip.out");

long a[16][16], sMax;
int n, m;

void rez(int lin, long suma);

int main()
{
  int i, j;
  f1>>n>>m;
  for (i=0; i<n; i++)
    for (j=0; j<m; j++)
      f1>>a[i][j];
  i=0;
  sMax=-16000000;
  rez(0, 0);
  f2<<sMax;
  f1.close();
  f2.close();
  return 0;
}//main

void rez(int lin, long suma)
{
  int i, j;
  long s, temp, t;
  s=0;
  for (i=0; i<m; i++)
    s+=a[lin][i];
  if (lin<(n-1))
  {
    rez(lin+1, suma+s);
    for (i=0; i<m; i++)
      a[lin][i]*=-1;
    rez(lin+1, suma-s);
    for (i=0; i<m; i++)
      a[lin][i]*=-1;
  }//if
  else
  {
    temp=suma+s;
    for (j=0; j<m; j++)
    {
      t=0;
      for (i=0; i<n; i++)
        t+=a[i][j];
      if (t<0)
        temp-=2*t;
    }//for i
    if (temp>sMax)
      sMax=temp;
    for (i=0; i<m; i++)
      a[lin][i]*=-1;
    temp=suma-s;
    for (j=0; j<m; j++)
    {
      t=0;
      for (i=0; i<n; i++)
        t+=a[i][j];
      if (t<0)
        temp-=2*t;
    }//for i
    if (temp>sMax)
      sMax=temp;
  }//else
}//rez