Cod sursa(job #2221963)

Utilizator sandu.m.mdMorari Sandu sandu.m.md Data 16 iulie 2018 11:30:31
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");

int mat[17][17];
int n, m;

bool line(int value){
	int sum1 = 0, sum2 = 0;
	for(int i = 0; i < m; i++){
		if(mat[value][i] > 0)sum1 += mat[value][i];
		else sum2 += abs(mat[value][i]);
	}
	if(sum1 < sum2){
		for(int i = 0; i < m; i++){
			mat[value][i] *= -1;
		}
		return false;
	} else return true;
}

bool col(int value){
	int sum1 = 0, sum2 = 0;
	for(int i = 0; i < n; i++){
		if(mat[i][value] > 0)sum1 += mat[i][value];
		else sum2 += abs(mat[i][value]);
	}
	if(sum1 < sum2){
		for(int i = 0; i < n; i++){
			mat[i][value] *= -1;
		}
		return false;
	} else return true;
}

int main(){
	fin >> n >> m;
	for(int i  = 0; i < n; i++){
		for(int j = 0; j < m; j++){
			fin >> mat[i][j];
		}
	}
	
	bool check = false;
	
	while(!check){
		check  = true;
		for(int i  = 0; i < n; i++){
			check = check and line(i);
		}
		
		for(int i = 0; i < m; i++){
			check = check and col(i);
		}
	}
	int sum = 0;
	for(int i = 0; i < n; i++){
		for(int j = 0; j < m; j++){
			sum += mat[i][j];
		}
	}
	fout << sum;
	return 0;
}