Cod sursa(job #595793)

Utilizator liviuchLiviu Chircu liviuch Data 14 iunie 2011 02:31:28
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.57 kb
#include <fstream>

int main(){
    
    std::ifstream f("flip.in");
    std::ofstream g("flip.out");
    
    int n, m, a = 0, b = 0, aux;
    
    f >> n;
    f >> m;
    int flip[n][m], flip2[n][m];
    
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++){
            f >> flip[i][j];
            flip2[i][j] = flip[i][j];
        }
    
    for(int i = 0; i < n; i++){
        aux = 0;
        
        for(int j = 0; j < m; j++){
            aux += flip[i][j];
        }
        if(aux < 0)
            for(int j = 0; j < m; j++)
                flip[i][j] *= -1;
    }
    
    for(int i = 0; i < m; i++){
        aux = 0;
        
        for(int j = 0; j < n; j++){
            aux += flip[j][i];
        }
        if(aux < 0){
            a += -aux;
            for(int j = 0; j < n; j++)
                flip[j][i] *= -1;
        } else {
            a += aux;
        }
    }
    
    for(int i = 0; i < n; i++){
        aux = 0;
        
        for(int j = 0; j < m; j++){
            aux += flip2[i][j];
        }
        if(aux < 0)
            for(int j = 0; j < m; j++)
                flip2[i][j] *= -1;
    }
    
    for(int i = 0; i < m; i++){
        aux = 0;
        
        for(int j = 0; j < n; j++){
            aux += flip2[j][i];
        }
        if(aux < 0){
            b += -aux;
            for(int j = 0; j < n; j++)
                flip2[j][i] *= -1;
        } else {
            b += aux;
        }
    }

    a < b? g << b : g << a;
    f.close();
    g.close();
    return 0;
}