Cod sursa(job #216564)

Utilizator cvicentiuCiorbaru Vicentiu Marian cvicentiu Data 24 octombrie 2008 21:05:15
Problema Jocul Flip Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.5 kb
#include <fstream>
long int a[16][16];
#define a (a-1)
long int a2[16][16];
#define a2 (a2-1)
int m,n;
int st[16];
#define st (st-1)
long long int suma;
using namespace std;
int citire(){
    int i,j;
    ifstream fin ("flip.in");
    fin>>n>>m;
    for (i=1;i<=n;i++)
        for (j=1;j<=m;j++)
            fin>>a[i][j];
    return 0;
}

int compara(){
int i,j,h;
int vert;
long long int 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 scriere(){
    ofstream fout("flip.out");
    fout<<suma;
return 0;
}

int main(){
    citire();
    back();
    scriere();
    return 0;
    
}