Cod sursa(job #1257667)

Utilizator sperila.alecsandru@yahoo.comSperila Alecsandru [email protected] Data 8 noiembrie 2014 03:47:57
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.52 kb
#include<iostream>
#include<fstream>

using namespace std;

void ShowMatrix(int matrix[16][16], int numColumn, int numLine);
int SumOfMatrix(int matrix[16][16], int numColumn, int numLine);

int main() {

	int numColumn, numLines, matrix[16][16], sumMatrix, sumColumn[16], sumLines[16],posC,posL;
	
	ifstream input("flip.in");
	ofstream output("flip.out");

	input >> numLines;
	input >> numColumn;
	
	for (size_t i = 0; i < 16; i++)
	{
		sumColumn[i] = 0;
		sumLines[i] = 0;

	}

	for (size_t i = 0; i < numLines; i++) {
		for (size_t j = 0; j < numColumn; i++) {
		}		input >> matrix[i][j];
	}

	for (size_t i = 0; i < numLines; i++)	{
		for (size_t j = 0; j < numColumn; j++) {
			sumColumn[i] += matrix[j][i];
			sumLines[i] += matrix[i][j];
		}

	}
	
	bool okLines = true;
	bool okColumn = true;
	
	while (okLines==true || okColumn==true) {
		
		okLines = false;
		okColumn = false;

		int minLine = sumLines[0];
		for (size_t i = 0; i < numLines; i++) {
			if (sumLines[i] < 0 && minLine > sumLines[i]) {
				minLine = sumLines[i];
				okLines = true;
				posL = i;
			}
		}

		int minColumn = sumColumn[0];
		for (size_t i = 0; i < numColumn; i++) {
			if (sumColumn[i] < 0 && minColumn > sumColumn[i]) {
				minColumn = sumColumn[i];
				okColumn = true;
				posC = i;
			}
		}

		if (okLines == true && okColumn == true) {
			if (minLine < minColumn) {
				for (size_t i = 0; i < numColumn; i++) {
					matrix[posL][i] *= -1;
				}
			}

			else {
				for (size_t i = 0; i < numLines; i++) {
					matrix[i][posC] *= -1;
				}
			}

		}

		else if (okLines == false && okColumn == true) {

			for (size_t i = 0; i < numLines; i++) {
				matrix[i][posC] *= -1;
			}

		}

		else if (okLines == true && okColumn == false) {
			for (size_t i = 0; i < numColumn; i++) {
					matrix[posL][i] *= -1;
				}
		}

		for (size_t i = 0; i < 16; i++) {
			sumColumn[i] = 0;
			sumLines[i] = 0;

		}

		for (size_t i = 0; i < numLines; i++)	{
			for (size_t j = 0; j < numColumn; j++) {
				sumColumn[i] += matrix[j][i];
				sumLines[i] += matrix[i][j];
			}
		}

	}


	cout << endl << "The maximum sum of the matrix is: " <<endl;
	cout << SumOfMatrix(matrix, numColumn, numLines)<<endl;

	input.close();
	output.close();
	
	return 0;
}

int SumOfMatrix(int matrix[16][16], int numColumn, int numLine) {

	int sum = 0;
	for (size_t i = 0; i < numLine; i++) {
		for (size_t j = 0; j < numColumn; j++) {

			sum += matrix[i][j];
		}
	}

	return sum;

}