Cod sursa(job #311594)

Utilizator cvicentiuCiorbaru Vicentiu Marian cvicentiu Data 3 mai 2009 19:07:51
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.69 kb
#include <fstream>   
int a[18][18];   
#define a (a-1)   
int a2[18][18];   
#define a2 (a2-1)   
int m,n;   
int st[20];   
#define st (st-1)   
long long suma;   
using namespace std;   
int citire(){   
    int i,j;     
    scanf("%d %d",&n,&m);   
    for (i=1;i<=n;i++)   
        for (j=1;j<=m;j++)   
            scanf("%d",&a[i][j]);   
    return 0;   
}   
  
int compara(){   
int i,j,h;   
int vert;   
long long sumasec;   
sumasec=0;   
for (i=1;i<=n;i++)   
        for (j=1;j<=m;j++)   
            if (st[i]==1){a2[i][j]=a[i][j];}   
               else {a2[i][j]=a[i][j]*(-1);}   
for (j=1;j<=m;j++){   
    vert=0;   
    for (i=1;i<=n;i++){   
        vert +=a2[i][j];   
        }      
       
    if (vert<0){for (h=1;h<=n;h++){   
                    a2[h][j]=a2[h][j]*-1;   
                    }   
    }   
  
}   
for (i=1;i<=n;i++)   
    for (j=1;j<=m;j++){   
        sumasec += a2[i][j];   
}   
if (sumasec>suma){   
                  suma=sumasec;}   
return 0;   
}   
  
int back(){   
    int k;   
    k=1;   
    while (k!=0){   
               st[k]++;     
              if (k==n){compara();}   
                 
              if (st[k]<3){   
                           if (k==n){    st[k]++;}   
                           else k++;   
                           }   
                 else {   
                      st[k]=0;                         
                      k--;          
              }   
    }   
return 0;   
}     
int main(){  
	freopen ("flip.in","r",stdin);
	freopen ("flip.out","w",stdout);
    citire();   
    back();   
    printf("%lld",suma);   
    return 0;   
       
}