Cod sursa(job #2223671)

Utilizator mrspvSpinu Vasilica-Stefan mrspv Data 21 iulie 2018 00:59:55
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int linii(float M[18][18], int m, int l)
{
	float sp = 0, sn=0;
	for (int i = 1; i <= m; i++)
		if (M[l][i] < 0)
			sn += M[l][i];
		else
			sp += M[l][i];

	if ((-1)*sn > sp)
	{
		for (int i = 1; i <= m; i++)
					M[l][i] = M[l][i] * (-1);
		return 1;
	}
	return 0;
}
int coloane(float M[18][18], int n, int c)
{
	float sp = 0, sn = 0;
	for (int i = 1; i <= n; i++)
		if (M[i][c] < 0)
			sn += M[i][c];
		else
			sp += M[i][c];

	if ((-1)*sn > sp)
	{
		for (int i = 1; i <= n; i++)
			M[i][c] = M[i][c] * (-1);
		return 1;
	}
	return 0;
}
int main()
{
	float M[18][18];
	int n, m;
	f >> n >> m;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= m; j++)
			f >> M[i][j];
	int ok = 1;
	while (ok)
	{
		ok = 0;
		for (int i = 1; i <= m; i++)
			if (coloane(M, n, i) == 1)
				ok = 1;
		for (int i = 1; i <= n; i++)
			if (linii(M, m, i) == 1)
				ok = 1;
		
	}
	int S = 0;
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
			S += M[i][j];
	}
	g << S;
	return 0;
}