Cod sursa(job #132331)

Utilizator ada_sAda-Mihaela Solcan ada_s Data 5 februarie 2008 17:06:53
Problema Castel Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
std::ifstream f1("castel.in");
std::ofstream f2("castel.out");
int main()
{
	int m, n, k, i, cheie[30000], cont;///20--->30000
	bool camere[30000], modif;
	f1>>m>>n>>k;
	for (i=1; i<=(n*m); i++)
	{
		f1>>cheie[i];
		camere[i]=0;
	}//for i
	camere[k]=1;
	modif=1;
	cont=1;
	while (modif)
	{
		modif=0;
		for (i=1; i<=(n*m); i++)
			if (camere[i])
			{
				if (((i-n)>0)&&(camere[cheie[i-n]])&&(camere[i-n]==0))
				{
					camere[i-n]=1;
					modif=1;
					cont++;
				}//if
				if (((i+n)<=(n*m))&&(camere[cheie[i+n]])&&(camere[i+n]==0))
				{
					camere[i+n]=1;
					modif=1;
					cont++;
				}//if
				if ((i>1)&&(((i-1)%n)!=0)&&(camere[cheie[i-1]])&&(camere[i-1]==0))
				{
					camere[i-1]=1;
					modif=1;
					cont++;
				}//if
				if (((i+1)<=(n*m))&&(((i+1)%n)!=1)&&(camere[cheie[i+1]])&&(camere[i+1]==0))		  
				{
					camere[i+1]=1;
					modif=1;
					cont++;
				}//if
		}//for i
	}//while
	f2<<cont;
	f1.close();
	f2.close();
	return 0;
}//main