Cod sursa(job #710876)

Utilizator SeekHunt1334Septimiu Bodica SeekHunt1334 Data 10 martie 2012 22:50:51
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <fstream>
using namespace std;

ifstream fin("flip.in");
ofstream fout("flip.out");

int n, m;
double flip[16][16],spoz, sneg, sumatot, scur;
bool gata = false;

void Solve();
double Flip(int i);
double Flipcol(int j);


int main()
{
	Solve();
	
	fin.close();
	fout.close();
	return 0;
}

void Solve()
{
	fin >> n >> m;
	do{
		gata = true;
		sumatot = 0; scur = 0; sneg = 0; spoz = 0;
	for (int i = 0; i < n; i++)
	{
		spoz = 0;
		sneg = 0;
		for (int j = 0; j < m; j++)
		{
			fin >> flip[i][j];
			if (flip[i][j] > 0)
				spoz += flip[i][j];
			else
				sneg += flip[i][j] * (-1);
		}
		
		if (sneg > spoz)
		{
			gata = false;
			Flip(i);
		}
	}
	
	for (int j = 0; j < m; j++)
	{	
		spoz = 0; 
		sneg = 0;
		scur = 0;
		for (int i = 0; i < n; i++)
		{
			if (flip[i][j] > 0)
			{
				spoz += flip[i][j];
				scur += flip[i][j];
			}
			else
			{
				sneg += flip[i][j] * (-1);
				scur += flip[i][j];
			}
		}
		
		if (sneg > spoz)
		{
			gata = false;
			scur = 0;
			Flipcol(j);
		}
		
		sumatot += scur;
	}
	
	} while (gata == false);
	
	fout << sumatot;
}

double Flip(int i)
{
	for (int j = 0; j < m; j++)
		flip[i][j] *= -1;
	
	return 0;
}

double Flipcol(int j)
{
	for (int i = 0; i < n; i++)
	{
		flip[i][j] *= -1;
		scur += flip[i][j];
	}
	return scur;
}