Cod sursa(job #1466930)

Utilizator atty97Toth Attila atty97 Data 1 august 2015 03:56:44
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <fstream>
using namespace std;

void min(int** tabla, int n, int m, int& pos_linie, int& pos_coloana)
{
	int i, j;
	int sum = 0;

	int linie_min = 999999, coloana_min = 999999;

	// LINIE MINIMA

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

		for (j = 0; j < m; j++)
		{
			sum += tabla[i][j];
		}

		if (sum < linie_min)
		{
			linie_min = sum;
			pos_linie = i;
		}
	}

	// COLOANA MINIMA

	for (i = 0; i < m; i++)
	{
		sum = 0;

		for (j = 0; j < n; j++)
		{
			sum += tabla[j][i];
		}

		if (sum < coloana_min)
		{
			coloana_min = sum;
			pos_coloana = i;
		}
	}
}

void comuta(int** tabla, int n, int m, int pos_coloana, int pos_linie)
{
	for (int i = 0; i < n; i++)
	{
		tabla[i][pos_coloana] *= -1;
	}

	for (int j = 0; j < m; j++)
	{
		tabla[pos_linie][j] *= -1;
	}
}

int finalSum(int** tabla, int n, int m)
{
	int sum = 0;

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

	return sum;
}

int main()
{
	ifstream inFile("flip.in");
	ofstream outFile("flip.out");
	int n, m;
	int pos_linie, pos_coloana;

	inFile >> n >> m;

	int coloana, linie; // trebuie comutat

	int** tabla = new int*[n];
	for (int i = 0; i < n; i++)
	{
		tabla[i] = new int[m];
	}

	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			inFile >> tabla[i][j];
		}
	}

	min(tabla, n, m, pos_linie, pos_coloana);
	comuta(tabla, n, m, pos_coloana, pos_linie);

	outFile << finalSum(tabla, n, m);
	outFile.flush();

	return 0;
}