Cod sursa(job #282304)

Utilizator vlad_olteanVladimir Oltean vlad_oltean Data 17 martie 2009 12:42:26
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <stdio.h>
#define N 101

int a[N][N],n,m;
int ir,jr,ij,jj;	//coord lui romeo si ale julietei
int vi[N*N],vj[N*N],l;
const int di[8]={-1,-1,0,1,1,1,0,-1};
const int dj[8]={0,1,1,1,0,-1,-1,-1};
int imin,jmin;

void citeste()
{	char c;
	scanf("%d %d\n",&n,&m);
	for(int i=1;i<=n;i++)
	{	for(int j=1;j<=m;j++)
		{	scanf("%c",&c);
			if(c=='R') {a[i][j]=1; ir=i;jr=j;}
			if(c=='J') {a[i][j]=1; ij=i;jj=j;}
			if(c==' ') a[i][j]=0;
			if(c=='X') a[i][j]=-1;
		}
		scanf("\n");
	}
	for(int i=0;i<=n+1;i++)
		a[i][0]=-1, a[i][n+1]=-1;
	for(int j=1;j<=m;j++)
		a[0][j]=-1, a[n+1][j]=-1;
}

void afis()
{
	for(int i=0;i<=n+1;i++)
	{	for(int j=0;j<=m+1;j++)
			printf("%2d ",a[i][j]);
		printf("\n");
	}
}

void lee()
{
	int i2,j2;
	vi[1]=ir; vj[1]=jr;
	vi[2]=ij; vj[2]=jj;
	l=2;
	for(int i=1;i<=l;i++)	
		for(int k=0;k<8;k++)
		{	i2=vi[i]+di[k];
			j2=vj[i]+dj[k];
			if(a[i2][j2]!=-1)
				if(a[i2][j2]==0)
				{	l++;
					vi[l]=i2; vj[l]=j2;
					a[i2][j2]=a[vi[i]][vj[i]]+1;
				}
				else
					if(a[i2][j2]==a[vi[i]][vj[i]]+1)
					{	printf("%d %d %d",a[i2][j2],i2,j2);
						return;
					}					
		}

}

int main()
{
	freopen("rj.in","r",stdin);
	freopen("rj.out","w",stdout);
	citeste();
	lee();
	return 0;
}