Cod sursa(job #1672634)

Utilizator GeorginskyGeorge Georginsky Data 2 aprilie 2016 22:06:02
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <iostream>
#include <fstream>
#define NMMAX 17
using namespace std;
ifstream in("flip.in");
ofstream out("flip.out");
int n, m, a[NMMAX][NMMAX], c;
long s;
bool validCol(int x){
    int s1=0, s2=0, i, ac;
    for(i=1; i<=n; i++){
        s1+=a[i][x];
        ac=a[i][x]-2*a[i][x];
        s2+=ac;
    }
    if(s2>s1)return true;
    return false;
}
bool validRand(int x){
    int s1=0, s2=0, i, ac;
    for(i=1; i<=m; i++){
        s1+=a[x][i];
        ac=a[x][i]-2*a[x][i];
        s2+=ac;
    }
    if(s2>s1)return true;
    return false;
}
int bruteforce_handicapat(){
    for(int i=1; i<=n; i++){
        if(validRand(i)){
            for(int j=1; j<=m; j++){
                c=a[i][j];
                a[i][j]-=2*c;
            }
        }
    }
    for(int i=1; i<=m; i++){
        if(validCol(i)){
            for(int j=1; j<=n; j++){
                c=a[j][i];
                a[j][i]-=2*c;
            }
        }
    }
    s=0;
    for(int i=1; i<=n; i++){
        for(int j=1; j<=m; j++){
            s+=a[i][j];
        }
    }
    return s;
}
int main(){
    in>>n>>m;
    int i, j;
    for(i=1; i<=n; i++){
        for(j=1; j<=m; j++){
            in>>a[i][j];
        }
    }
    int y=bruteforce_handicapat();
    out<<y;
    return 0;
}