Cod sursa(job #847319)

Utilizator gbi250Gabriela Moldovan gbi250 Data 3 ianuarie 2013 18:15:03
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <iostream>
#include <cstdio>
#include <cstring>
FILE *fin=fopen("rj.in", "r"), *fout=fopen("rj.out", "w");
using namespace std;
char ch[102];
int sw, n, m, a[36000][101], i, j, linR, colR, linJ, colJ;
int in, sf, dl[8]={-1, -1, 0, 1, 1, 1, 0, -1}, dc[8]={0, 1, 1, 1, 0, -1, -1, -1};
int k;


struct deplas{
	int l, c;
	int d;
}c[36000], x, y;

int main()
{
	fscanf(fin, "%d%d", &n, &m);
	fscanf(fin, "%c", &ch);

	for(i=1;i<=n;i++)
	{

		fgets(ch,101, fin);
		for(j=0;j<=m-1;j++)
			{
				if(ch[j]=='R')
					a[i][j+1]=1, x.l=linR=i, x.c=colR=j+1;

				else if(ch[j]=='J')
					a[i][j+1]=1, linJ=i, colJ=j+1;
				else if(ch[j]=='X')
					a[i][j+1]=-2;
				else if(ch[j]==' ')
					a[i][j+1]=0;

			}
	}


	c[1].l=linR;
	c[1].c=colR;

	c[2].l=linJ;
	c[2].c=colJ;

	c[2].d=1;
	c[1].d=1;
	in=1;
	sf=2;

	while(in<=sf)
	{
		x=c[in++];
		for(i=0;i<=7;i++)
		{
			y.l=x.l+dl[i];
			y.c=x.c+dc[i];
			if(y.l>=1&&y.l<=n&&y.c>=1&&y.c<=m)
				if(a[y.l][y.c]==0)
				{
					y.d=x.d+1;
					c[++sf]=y;
					a[y.l][y.c]=y.d;
				}
		}
	}

	fprintf(fout, "%d %d %d", y.d, x.l, x.c);
	return 0;
}