Cod sursa(job #193669)

Utilizator cotofanaCotofana Cristian cotofana Data 6 iunie 2008 00:15:43
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <stdio.h>

int n, m, r[101][101], j1[101][101], xr, yr, xj, yj, x1, y1, t;
char s[101][101];

void lee(int mat[101][101], int xr, int yr)
{
	int xx, yy, x[10001], y[10001], pr, ul, i, j;
	const int dx[]={-1, -1, 0, 1, 1, 1, 0, -1}, dy[]={0, 1, 1, 1, 0, -1, -1, -1};
	for (i=0; i<n; i++)
		for (j=0; j<m; j++)
			mat[i][j]=0;
	pr=ul=0;
	x[0]=xr;
	y[0]=yr;
	mat[xr][yr]=1;
	while (pr<=ul)
	{
		for (i=0; i<8; i++)
		{
			xx=x[pr]+dx[i];
			yy=y[pr]+dy[i];
			if (xx>=0 && xx<n && yy>=0 && yy<m && s[xx][yy]!='X' && mat[xx][yy]==0)
			{
				mat[xx][yy]=mat[x[pr]][y[pr]]+1;
				ul++;
				x[ul]=xx;
				y[ul]=yy;
			}
		}
                pr++;
	}
	t=(mat[x[pr]][y[pr]]+1)/2;
}

int main()
{
	freopen("rj.in", "rt", stdin);
	freopen("rj.out", "wt", stdout);
	int i, j;
	scanf("%d %d\n", &n, &m);
	for (i=0; i<n; i++) 
	{
		gets(s[i]);
		for (j=0; j<m; j++) if (s[i][j]=='R')
		{
			xr=i;
			yr=j;
		}
		else if (s[i][j]=='J')
		{
			xj=i;
			yj=j;
		}
	}
	lee(r, xr, yr);
	lee(j1, xj, yj);
	t=n*m+5;
	for (i=0; i<n; i++)
		for (j=0; j<m; j++)
			if (r[i][j]==j1[i][j] && r[i][j]!=0 && r[i][j]<t)
			{
				t=r[i][j];
				x1=i;
				y1=j;
			}
	printf("%d %d %d", t, x1+1, y1+1);
	return 0;
}