Cod sursa(job #690359)

Utilizator toyoIacob Theodor toyo Data 25 februarie 2012 16:01:31
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include<cstdio>
using namespace std;

int n,m,i,j,xj,yj,k=1,x,y,q,xnou,ynou,timp,ok=1;
int A[105][105],di[]={0,1,1,1,0,-1,-1,-1},dj[]={1,1,0,-1,-1,-1,0,1},L[105*105],C[105*105],LJ[105*105],CJ[105*105];
char c;


int main()
{

freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);

scanf("%d",&n);
scanf("%d",&m);

for(i=1;i<=n;i++)
	for(j=1;j<=m;j++)
	{	
		scanf("%c",&c);
	if(c==' ')
		A[i][j]=0;
	else if(c=='X')
		A[i][j]=-1;
	else if(c=='R')
		{
			A[i][j]=1;
			L[1]=i;
			C[1]=j;
		}
	else if(c=='J')
		{
			A[i][j]=1;
			xj=i;yj=j;
		}
	else 
		j--;
	}
	
for(i=0;i<=n+1;i++)
	A[i][0]=A[i][m+1]=-1;
for(j=0;j<=m+1;j++)
	A[0][j]=A[n+1][j]=-1;

k=1;

for(i=1;i<=k;i++)
{
	x=L[i];y=C[i];
		for(q=0;q<8;q++)
		{
			xnou=x+di[q];
			ynou=y+dj[q];
		
				if(A[xnou][ynou]==0)
				{
					A[xnou][ynou]=A[x][y]+1;
					k++;
					L[k]=xnou;
					C[k]=ynou;
				}
		}
}


timp=1;
k=1;
LJ[1]=xj;
CJ[1]=yj;
	

for(i=1;i<=k;i++)
{
if(ok==1)
{
	x=LJ[i];y=CJ[i];
		for(q=0;q<8;q++)
		{
		if(ok==1)
		{
			xnou=x+di[q];
			ynou=y+dj[q];
		
				if(A[xnou][ynou]!=timp+1 && A[xnou][ynou]>1 && xnou!=xj && ynou!=yj)
				{
					k++;
					LJ[k]=xnou;
					CJ[k]=ynou;
				}
				else if(A[xnou][ynou]==timp+1)
					{ok=0;
					x=xnou;
					y=ynou;
					break;
					}
		}
		}
	timp++;
}
}


printf("%d ",timp);
printf("%d ",x);
printf("%d",y);
printf("\n");


return 0;

}