Cod sursa(job #2981950)

Utilizator AttylaxKucsvan Attila Attylax Data 19 februarie 2023 11:30:52
Problema Jocul Flip Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <iostream>
#include <fstream>
#include <array>

using namespace std;

ifstream in ("flip.in");
ofstream out ("flip.out");

int main ()
{
	long int matrix[16][16] = { 0 };
	short N = 0, M = 0;
	in >> N >> M;
	for (short indexRow = 0; indexRow < M; ++indexRow)
		for (short indexColumn = 0; indexColumn < N; ++indexColumn)
			in >> matrix[indexRow][indexColumn];

	bool needOptimisation = true;
	while (needOptimisation) {
		needOptimisation = false;
		for (short indexRow = 0; indexRow < N; ++indexRow) {
			long int sumRow = 0;
			for (short indexColumn = 0; indexColumn < M; ++indexColumn)
				sumRow += matrix[indexRow][indexColumn];
			if (sumRow < 0) {
				needOptimisation = true;
				for (short indexColumn = 0; indexColumn < M; ++indexColumn)
					matrix[indexRow][indexColumn] *= -1;
			}
		}

		for (short indexColumn = 0; indexColumn < M; ++indexColumn) {
			long int sumColumn = 0;
			for (short indexRow = 0; indexRow < N; ++indexRow)
				sumColumn += matrix[indexRow][indexColumn];
			if (sumColumn < 0) {
				needOptimisation = true;
				for (short indexRow = 0; indexRow < N; ++indexRow)
					matrix[indexRow][indexColumn] *= -1;
			}
		}
	}

	long int sum = 0;
	for (short indexRow = 0; indexRow < N; ++indexRow)
		for (short indexColumn = 0; indexColumn < M; ++indexColumn)
			sum += matrix[indexRow][indexColumn];

	out << sum;

	return 0;
}