Cod sursa(job #1169260)

Utilizator andreey_047Andrei Maxim andreey_047 Data 10 aprilie 2014 19:56:29
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.22 kb
#include <cstdio>
//#include <iostream>
using namespace std;
int a[21][21],n,m;
long long summax;
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;
    if(k == n+1)
     ;
    else
    {
        for(i=1;i<=2;i++)
        {
            if(i == 1)
            {
                     if(Calc() > summax)
                    summax = Calc();
                    Solvecol(1);
                    Flip(k+1);
            }
            else if(i==2)
            {
                  Schimbalin(k);
                     if(Calc() > summax)
                    summax = Calc();
                    else Schimbalin(k);
                   Solvecol(1);
                    Flip(k+1);

            }
        }

    }
}
int main(){
    int i,j;
    freopen("flip.in","r",stdin);
    freopen("flip.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
     for(j=1;j<=m;j++)
      {scanf("%d",&a[i][j]);summax+=a[i][j];}
    //Flip(1);
   for(i=1;i<=n;i++)
   {
       for(j=1;j<=2;j++)
       {
           if(j==1)
           {
               Solvecol(1);
               if(Calc() > summax) summax=Calc();
           }
           else
           {
               Schimbalin(i);
                if(Calc() > summax) summax=Calc();
            else Schimbalin(i);
           }

       }
   }
//  for(i=1;i<=n;i++)
//  {
//      for(j=1;j<=m;j++)
//       printf("%d ",a[i][j]);
//    printf("\n");
//  }
    printf("%d\n",summax);
    return 0;
}