Cod sursa(job #1200558)

Utilizator ValyGabrielMitrea Valentin Gabriel ValyGabriel Data 22 iunie 2014 20:29:49
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.72 kb
#include <fstream>

using namespace std;


int min(int a, int b)
{
	if (a <= b)
		return a;

	return b;
}


int joculFlip(int n, int m, int matrix[16][16])
{
	int i, j, k, suma = 0, aux;


	for (k = 0; k < min(n, m); k ++)
	{
		aux = 0;
		for (j = 0; j < m; j ++)
			aux += matrix[k][j];

		//daca suma liniei este mai mica ca 0, atunci trebuie sa fac switch
		if (aux < 0)
			for (j = 0; j < m; j ++)
				matrix[k][j] = -matrix[k][j];

		aux = 0;
		for (i = 0; i < n; i ++)
			aux += matrix[i][k];

		//daca suma coloanei este mai mica ca 0, atunci trebuie sa fac switch
		if (aux < 0)
			for (i = 0; i < n; i ++)
				matrix[i][k] = -matrix[i][k];
	}

	if (n <= m)
		for (j = n; j < m; j ++)
		{
			aux = 0;
			for (i = 0; i < n; i ++)
				aux += matrix[i][j];

			//daca suma coloanei este mai mica ca 0, atunci trebuie sa fac switch
			if (aux < 0)
				for (i = 0; i < n; i ++)
					matrix[i][j] = -matrix[i][j];
		}
	else
		for (i = m; i < n; i ++)
		{
			aux = 0;
			for (j = 0; j < m; j ++)
				aux += matrix[i][j];

			//daca suma liniei este mai mica ca 0, atunci trebuie sa fac switch
			if (aux < 0)
				for (j = 0; j < m; j ++)
					matrix[i][j] = -matrix[i][j];
		}

	//calculez suma elementelor matricii dupa modificari
	for (i = 0; i < n; i ++)
		for (j = 0; j < m; j ++)
			suma += matrix[i][j];

	return suma;
}


int main(int argc, char** argv)
{
    int n, m, matrix[16][16];
    
    ifstream in("flip.in");
    ofstream out("flip.out");
    
    in >> n;
	in >> m;

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

    out << joculFlip(n, m, matrix);


    in.close();
	out.close();
    
    return 0;
}