Cod sursa(job #2452108)

Utilizator emilia_Emilia Iuliana emilia_ Data 29 august 2019 16:30:40
Problema Jocul Flip Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.71 kb
#include <iostream>
#include <fstream>
#define NMAX 16

int main() {
	std::ifstream in;
	std::ofstream out;
	int N, M;
	int matrix[NMAX][NMAX];
	int sum = 0, sum_poz = 0, sum_neg = 0;
	in.open("flip.in");
	in >> N;
	in >> M;
	out.open("flip.out");
	if (M > N) {
		for (int i = 0 ; i < N ; i++) {
			sum_poz = sum_neg = 0;
			for (int j = 0; j < M; j++) {
				in >> matrix[i][j];
				if (matrix[i][j] > 0){
					sum_poz += matrix[i][j];
				} else {
					sum_neg += matrix[i][j];
				}
			}
			if ((0-sum_neg) > sum_poz) {
				for(int j = 0; j < M; j++) {
					matrix[i][j] = 0-matrix[i][j];
				}
			}
		}
		for (int j = 0; j < M; j++) {
			sum_poz = sum_neg = 0;
			for (int i = 0; i < N; i++) {
				if (matrix[i][j] > 0){
					sum_poz += matrix[i][j];
				} else {
					sum_neg += matrix[i][j];
				}
			}
			if ((0-sum_neg) > sum_poz){
				for (int i = 0; i < N; i++) {
					matrix[i][j] = 0 - matrix[i][j];
				}
			}
		}
	} else {
		for (int j = 0 ; j < M ; j++) {
			sum_poz = sum_neg = 0;
			for (int i = 0; i < N; i++) {
				in >> matrix[i][j];
				if (matrix[i][j] > 0){
					sum_poz += matrix[i][j];
				} else {
					sum_neg += matrix[i][j];
				}
			}
			if ((0 - sum_neg) > sum_poz){
				for(int i = 0; i < N; i++) {
					matrix[i][j] = 0 - matrix[i][j];
				}
			}
		}
		for (int i = 0; i< N; i++) {
			sum_poz = sum_neg = 0;
			for (int j = 0; j< M; j++){
				if (matrix[i][j] > 0){
					sum_poz += matrix[i][j];
				} else {
					sum_neg += matrix[i][j];
				}
			}
			if ((0 - sum_neg) > sum_poz) {
				for(int j = 0; j < M; j++) {
					matrix[i][j] = 0 - matrix[i][j];
				}
			}
		}
	}

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			sum += matrix[i][j];
		}
	}
	out << sum;
	
	in.close();
	out.close();
	return 0;
}