Cod sursa(job #781691)

Utilizator killerkiller11Balas Tudor killerkiller11 Data 24 august 2012 21:51:16
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<fstream>
using namespace std;
int N,M,v[20005][20005],x,updown[1000005],leftright[1000005],updown2[1000005],leftright2[100],misca=1,misca2;
void citire()
{
	
	ifstream fin("flip.in");
	fin>>N>>M;
	for(int i=1;i<=N;++i)
		for(int j=1;j<=M;++j)
			fin>>v[i][j];
	fin.close();
}

void magic()
{
	while(misca)
	{
		misca=0;
		for(int j=1;j<=N;++j)
		{
			for(int i=1;i<=M;++i)
			{
				leftright[j]+=v[j][i];
				leftright2[j]+=-v[j][i];
			}
			if(leftright2[j]>leftright[j])
			{
				for(int i=1;i<=N;++i)
					v[j][i]=-1*v[j][i];
				++misca;
				++misca2;
			}
		}
	}
	misca=1;
	while(misca)
	{
		misca=0;
		for(int j=1;j<=N;++j)
		{
			for(int i=1;i<=M;++i)
			{
				updown[j]+=v[i][j];
				updown2[j]-=v[i][j];
			}
			if(updown2[j]>updown[j])
			{
				for(int i=1;i<=N;++i)
					v[i][j]=-1*v[i][j];
				++misca;
				++misca2;
			}
		}
	}
	
}

void afisare()
{
	ofstream fout("flip.out");
	for(int i=1;i<=N;i++)
		for(int j=1;j<=M;j++)
			x+=v[i][j];
	fout<<x;
	fout.close();
}	
int main()
{
	citire();
	while(misca)
		magic();
	afisare();
	return 0;
}