Cod sursa(job #2452116)

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

int main() {
	std::ifstream in;
	std::ofstream out;
	int N, M;
	int matrix[NMAX][NMAX];
	int matrix2[NMAX][NMAX];
	int sum = 0, sum_poz = 0, sum_neg = 0, sum2 =0, sum_max =0;
	in.open("flip.in");
	in >> N;
	in >> M;
	out.open("flip.out");
	for (int i = 0 ; i < N ; i++) {
		sum_poz = sum_neg = 0;
		for (int j = 0; j < M; j++) {
			in >> matrix[i][j];
			matrix2[i][j] = 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 i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			sum += matrix[i][j];
		}
	}
	if (sum > sum_max) {
		sum_max = sum;
	}
	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];
			}
		}
	}
	sum = 0;
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			sum += matrix[i][j];
		}
	}
	if (sum > sum_max) {
		sum_max = sum;
	}
	for (int j = 0 ; j < M ; j++) {
		sum_poz = sum_neg = 0;
		for (int i = 0; i < N; i++) {
			in >> matrix2[i][j];
			if (matrix2[i][j] > 0){
				sum_poz += matrix2[i][j];
			} else {
				sum_neg += matrix2[i][j];
			}
		}
		if ((0 - sum_neg) > sum_poz){
			for(int i = 0; i < N; i++) {
				matrix2[i][j] = 0 - matrix2[i][j];
			}
		}
	}
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			sum2 += matrix[i][j];
		}
	}
	if (sum2 > sum_max) {
		sum_max = sum2;
	}
	for (int i = 0; i< N; i++) {
		sum_poz = sum_neg = 0;
		for (int j = 0; j< M; j++){
			if (matrix2[i][j] > 0){
				sum_poz += matrix2[i][j];
			} else {
				sum_neg += matrix2[i][j];
			}
		}
		if ((0 - sum_neg) > sum_poz) {
			for(int j = 0; j < M; j++) {
				matrix2[i][j] = 0 - matrix2[i][j];
			}
		}
	}
	sum2 = 0;
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			sum2 += matrix[i][j];
		}
	}
	if (sum2 > sum_max) {
		sum_max = sum2;
	}
	
	out << sum_max;
	
	in.close();
	out.close();
	return 0;
}