Cod sursa(job #1225824)

Utilizator patrick_vladPatrick Vlad patrick_vlad Data 3 septembrie 2014 18:25:57
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <fstream>
#define endl f2<<"\n";
#define print f2<<
using namespace std;
ifstream f1 ("flip.in");
ofstream f2 ("flip.out");

int map[16][16];
int n, m;

void print_map(){
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            if(map[i][j] >= 0)
                f2<<"  "<<map[i][j];
            else
                f2<<" "<<map[i][j];
        }
        f2<<"\n";
    }
}
void flip_row(int row){
    for(int i = 0; i < m; i++){
        map[row][i] *= -1;
    }
}
void flip_col(int col){
    for(int i = 0; i < n; i++){
        map[i][col] *= -1;
    }
}
int sum_row(int row){
    int s = 0;
    for(int i = 0; i < m; i++){
        s += map[row][i];
    }
    return s;
}
int sum_col(int col){
    int s = 0;
    for(int i = 0; i < n; i++){
        s += map[i][col];
    }
    return s;
}


int main(){
    f1>>n;
    f1>>m;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            f1>>map[i][j];
        }
        if(sum_row(i) < 0) flip_row(i);
    }
    for(int i = 0; i < m; i++){
        if(sum_col(i) < 0) flip_col(i);
    }
    int s = 0;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            s += map[i][j];
        }
    }
    //print_map();
    //endl
    print s;
    return 0;
}