Cod sursa(job #334359)

Utilizator mihaibogdan10Mihai Bogdan mihaibogdan10 Data 26 iulie 2009 14:24:32
Problema Jocul Flip Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<fstream>

using namespace std;
int l,c;
long a[20][20];
int SumaLin(int i)
{
	int s=0;
	for (int j=0;j<c;j++)
		s+=a[i][j];
	return s;
}

int SumaCol(int j)
{
	int s=0;
	for (int i=0;i<l;i++)
		s+=a[i][j];
	return s;
}

void FlipLin(int i)
{
	for (int j=0;j<c;j++)
		a[i][j]*=-1;
}

void FlipCol(int j)
{
	for (int i=0;i<l;i++)
		a[i][j]*=-1;
}

int main()
{
	ifstream fin("flip.in");
	fin>>l>>c;
	int i,j;
	for (i=0;i<l;i++)
		for (j=0;j<c;j++)
			fin>>a[i][j];
	int ok,ko;
	do
	{
	ko=0;	
	for (i=0;i<l;i++)
		for (j=0;j<c;j++)
			if ((a[i][j]>0)&&(SumaLin(i)+SumaCol(j)-2*a[i][j]<0))
			{FlipLin(i);FlipCol(j);ko=1;}
	
	do
	{
		ok=1;
		for (i=0;i<l;i++) 
			if (SumaLin(i)<0) {FlipLin(i);ok=0;ko=1;}
		for (j=0;j<c;j++)
			if (SumaCol(j)<0) {FlipCol(j);ok=0;ko=1;}
	}
	while (ok==0);
	}
	while(ko==1);

	
	long s=0;
	for (i=0;i<l;i++)
		for (j=0;j<c;j++)
			s+=a[i][j];
	ofstream fout("flip.out");
	fout<<s<<"\n";
	for (i=0;i<l;i++)
		{
		for (j=0;j<c;j++)
			fout<<a[i][j]<<" ";
		fout<<"\n";
		}
return 0;
}