Cod sursa(job #670285)

Utilizator somfeleaniuliaSomfelean Iulia somfeleaniulia Data 28 ianuarie 2012 20:12:10
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<fstream>
#include<cmath>
using namespace std;
	fstream fin("flip.in",ios::in),fout("flip.out",ios::out);
	
	int n,m,x[20][20];
	
void sumal(int l,int &sp,int &sn,int &ok)
{
	int i;
	ok=0;
	sn=sp=0;
	for(i=1;i<=m;i++)
	{
		if(x[l][i]>=0)
			sp+=x[l][i];
		else
			sn+=-(x[l][i]);
	}
	if(sp>sn)
		ok=1;
	
}
void sumac(int c,int &sp,int &sn,int &ok)
{
	int i;
	ok=0;
	sn=sp=0;
	for(i=1;i<=n;i++)
	{
		if(x[i][c]>=0)
			sp+=x[i][c];
		else
			sn+=-(x[i][c]);
	}
	if(sp>sn)
		ok=1;
}
void comutarel(int l)
{
	for(int i=1;i<=m;i++)
	{
		x[l][i]*=-1;
	}
}
void comutarec(int c)
{
	for(int i=1;i<=n;i++)
	{
		x[i][c]*=-1;
	}
}
int main()
{
	int i,j,sn=0,sp=0,s=0,ok;
	fin>>n>>m;
	for(i=1;i<=n;i++)
	{
		sn=sp=0;
		for(j=1;j<=m;j++)
		{
			fin>>x[i][j];
		}
		sumal(i,sp,sn,ok);
		if(ok==1)
		{
			s+=sn-sp;
			comutarel(i);
		}
		else
		{
			s+=sp-sn;
		}
	}

	for(j=1;j<=n;j++)
	{
		sn=sp=0;
		sumac(j,sp,sn,ok);
		if(ok==1)
		{
			s+=sn-sp;
			comutarec(j);
		}
		else
		{
			s+=sp-sn;
		}
	}
	fout<<-s;

fin.close();
fout.close();
return 0;
}