Cod sursa(job #769640)

Utilizator ContraPunctContrapunct ContraPunct Data 20 iulie 2012 12:45:47
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<cstdio>

using namespace std;

int N,M;
int mat[20][20];
long long sumM = 0 ;
int flipL[20], flipC[20];

void ReadData(){
    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",&mat[i][j]);            
}

void Sum(){
    int i,j;
    long long suma = 0, sumaP=0 ;
    for(i=1;i<=N;++i){
        sumaP = 0;
        for(j=1;j<=M;++j)
            sumaP += mat[i][j] * flipC[j] * flipL[i];        
        suma += sumaP;
    }
    if(suma > sumM)
        sumM = suma;
}
void BackC(int top){
    if(top == M + 1 ) {
        Sum();
        return;
    }
    flipC[top] = -1;
    BackC(top+1); 
    flipC[top] = 1;
    BackC(top+1);    
}
void BackL(int top){
    if(top == N + 1 ) {
        BackC(1);
        return;
    }
    flipL[top] = -1;
    BackL(top+1); 
    flipL[top] = 1;
    BackL(top+1);    
}

void WriteData(){
    printf("%lld\n",sumM);
}
 
int main(){
    ReadData();
    BackL(1);
    WriteData();
    return 0;
}