Cod sursa(job #393141)

Utilizator evil_k1devilk1d evil_k1d Data 8 februarie 2010 22:29:44
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <fstream>

using namespace std;

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

long long f[20][16], s, d;
int n, m;

void citire ()
{
	f1>>n;
	f1>>m;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
			f1>>f[i][j];
	f1.close();

}

void flipLinie (int z)
{
	short l = -1;
	for ( int i = 0; i < m; i++)
	{
		f[z][i] = f[z][i] * l;
	}
}

void flipColoana (int z)
{
	short l = -1;
	for ( int i = 0; i < n; i++)
	{
		f[i][z] = f[i][z] * l;
	}
}

void sumaColoane (int z)
{	
	s = 0;
	d = 0;
	short l = -1;
	for (int i = 0; i < n; i++)
	{
		if ( f[i][z] < 0 ) d += f[i][z];
		else s += f[i][z];
	}

	if ( (d * l)> s ) flipColoana (z);
}

void sumaLinii (int z)
{	
	s = 0;
	d = 0;
	short l = -1;
	for (int i = 0; i < m; i++)
	{
		if ( f[z][i] < 0 ) d += f[z][i];
		else s += f[z][i];
	}

	if ( (d * l)> s ) flipLinie (z);
}



void suma ()
{	
	s = 0;
	for ( int i = 0; i < n; i++)
		for ( int j = 0; j < m; j++)
			s += f[i][j];
	f2<<s;
	f2.close();
}

void linii ()
{
	for ( int i = 0; i < n; i++)
		sumaLinii (i);
}

void coloane ()
{
	for ( int i = 0; i < m; i++)
		sumaColoane (i);
}

int main ()
{
	citire ();
	coloane ();
	linii ();
	suma ();
	return 0;
}