Cod sursa(job #601201)

Utilizator MaverickChicinas T.Raul Maverick Data 5 iulie 2011 12:46:22
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
using namespace std;
#include <fstream>
ifstream fin("rj.in");
ofstream fout("rj.out");
char M[150][105];
short int i,j,n,m,aux;
short int Vert[8]={-1,-1,-1,0,1,1,1,0};
short int Oriz[8]={-1,0,1,1,1,0,-1,-1};
int main()
{fin>>n>>m;fin.get();
for(i=1;i<=n;i++)
	fin.getline(M[i]+1,105);
for(i=0;i<=n+1;i++)
	M[i][0]=M[i][m+1]='X';
for(i=0;i<=m+1;i++)
	M[0][i]=M[m+1][i]='X';
for(i=1;i<=n;i++)
{
	for(j=1;j<=m;j++)
		fout<<M[i][j];
	fout<<endl;
}
///////////////////////////////////// S T A R T////////////////////////
int stop=0,K=1,gL;
while(stop!=1)
{

	gL=0;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			if(M[i][j]=='R')
			{
				for(aux=0;aux<8;aux++)
				{
					if(M[i+Vert[aux]][j+Oriz[aux]]==' ')
					{
						M[i+Vert[aux]][j+Oriz[aux]]='R';
						gL=1;
					}
					else
						if(M[i+Vert[aux]][j+Oriz[aux]]=='J')
						{
							M[i+Vert[aux]][j+Oriz[aux]]='R';
							gL=1;
						}
					
				}
				if(gL==1)
					goto next;
			}
	next:
	gL=0;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			if(M[i][j]=='J')
			{
				for(aux=0;aux<8;aux++)
				{
					if(M[i+Vert[aux]][j+Oriz[aux]]==' ')
					{
						M[i+Vert[aux]][j+Oriz[aux]]='J';
						gL=1;
					}
					else
						if(M[i+Vert[aux]][j+Oriz[aux]]=='R')
						{
							fout<<K+1<<" "<<i+Vert[aux]<<" "<<j+Oriz[aux];
							return 0;
						}
				}
			if(gL==1)
				goto out;
			}
	out:
	K++;
}
}