Cod sursa(job #1169248)

Utilizator andreey_047Andrei Maxim andreey_047 Data 10 aprilie 2014 19:23:55
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.79 kb
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int a[21][21],n,m,summax,sumtot,s[21][21];
void Schimbalin(int lin){
    int i;
    for(i = 1; i <= m; i++)
     a[lin][i]*=-1;
}
void Schimbacol(int col){
        int i;
    for(i = 1; i <= n; i++)
     a[i][col]*=-1;
}
int Calc(){
    int sum,i,j;
         sum=0;
    for(i=1;i<=n;i++)
     for(j=1;j<=m;j++)
      sum+=a[i][j];
  return sum;
}
void Solvecol(int k)
{
    int i;
    if(k == m+1)
     ;
    else
     for(i=1;i<=2;i++)
      {
          if(i==1)
          {
              if(Calc() > summax)
               summax = Calc();
             Solvecol(k+1);
          }
         else
         {
             Schimbacol(k);
              if(Calc() > summax)
               summax = Calc();
              else Schimbacol(k);
             Solvecol(k+1);
         }
      }
}
void Flip(int k)
{
    int i,j,q;
    if(k == n+1)
    {
        //cout << Calc()<<"\n";
    }
    else
    {
        for(i=1;i<=2;i++)
        {
            if(i == 1)
            {
                     if(Calc() > summax)
                    summax = Calc();
                    Solvecol(1);
                    Flip(k+1);
            }
            else
            {
                  Schimbalin(k);
                     if(Calc() > summax)
                    summax = Calc();
                    else Schimbalin(k);
                    Solvecol(1);
                    Flip(k+1);

            }
        }

    }
}
int main(){
    int i,j;
    fin >> n >> m;
    for(i=1;i<=n;i++)
     for(j=1;j<=m;j++)
      {fin >> a[i][j];summax+=a[i][j];}
    fin.close();
    Flip(1);

    fout << summax << "\n";
    fout.close();
    return 0;
}