Cod sursa(job #1880348)

Utilizator andrew673Ilie Andrei Catalin andrew673 Data 15 februarie 2017 18:16:17
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <iostream>
#include <fstream>
#include <vector>

int main(void)
{
	std::ifstream f("flip.in");
	int n, m;

	f >> n >> m;
	std::vector<std::vector<int> > flip_matrix(n, std::vector<int>(m, 0));
	std::vector<std::vector<int> > verif_matrix(n, std::vector<int>(m, 0));

	for (int i = 0; i < n; ++i)
		for (int j = 0; j < m; ++j)
	 		f >> flip_matrix[i][j];

	//Vad care linii au suma negativa si le inversez valorile

	for (int i = 0; i < n; ++i) {

		int sum = 0;
		for (int j = 0; j < m; ++j)
			sum += flip_matrix[i][j];

		if (sum < 0) {
			for (int j = 0; j < m; ++j) {
				flip_matrix[i][j] = - flip_matrix[i][j];
				verif_matrix[i][j] = 1;
			}
		}
	}

	//Vad care coloane au suma negativa si le inversez valorile

	for (int j = 0; j < m; ++j) {

		int sum = 0;
		for (int i = 0; i < n; ++i)
			sum += flip_matrix[i][j];

		if (sum < 0) {
			for (int i = 0; i < n; ++i)
				if(verif_matrix[i][j] == 0)
					flip_matrix[i][j] = - flip_matrix[i][j];
		}
	}

	//Calculez suma maxima a elementelor matricei

	int sum = 0;
	for (int i = 0; i < n; ++i)
		for (int j = 0; j <m; ++j)
			sum += flip_matrix[i][j];

	std::ofstream g("flip.out");
	g << sum;
	g << std::endl;
	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < m; ++j)
	 		g << flip_matrix[i][j] << " ";
	 	g << std::endl;
	}

	f.close();
	g.close();

	return 0;

}