Cod sursa(job #415783)

Utilizator dushmiMihai-Alexandru Dusmanu dushmi Data 11 martie 2010 20:31:07
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include<cstdio>
struct punct
{
	int lin,col;
};
const int N=1<<7;
punct coada[N*N];
char tata[N][N],ma[N][N];
int n,m,a[N][N];
int dl[]={0,1,0,-1,1,1,-1,-1};
int dc[]={1,0,-1,0,1,-1,1,-1};
void lee()
{
	int i,j,u=0;
	punct x,y;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
		{
			if(ma[i][j]=='R')
			{
				coada[u].lin=i;
				coada[u].col=j;
				tata[i][j]='R';
				u++;
			}
			else if(ma[i][j]=='J')
			{
				coada[u].lin=i;
				coada[u].col=j;
				tata[i][j]='J';
				u++;
			}
		}
	for(i=0;i<u;i++)
	{
		x.lin=coada[i].lin;
		x.col=coada[i].col;
		for(j=0;j<8;j++)
		{
			y.lin=x.lin+dl[j];
			y.col=x.col+dc[j];
			if(ma[y.lin][y.col]==' ')
			{
				if(a[y.lin][y.col]==0)
				{
					a[y.lin][y.col]=a[x.lin][x.col]+1;
					coada[u++]=y;
					tata[y.lin][y.col]=tata[x.lin][x.col];
				}
				else if(tata[y.lin][y.col]!=tata[x.lin][x.col] && a[y.lin][y.col]==a[x.lin][x.col]+1)
				{
					printf("%d %d %d",a[y.lin][y.col]+1,y.lin,y.col);
					return;
				}
			}
		}
	}
}
int main()
{
	freopen("rj.in","r",stdin);
	freopen("rj.out","w",stdout);
	scanf("%d%d\n",&n,&m);
	for(int i=1;i<=n;i++)
		gets(ma[i]+1);
	for(int i=1;i<=n;i++)
		ma[i][0]=ma[i][m+1]='X';
	for(int j=1;j<=m;j++)
		ma[0][j]=ma[n+1][j]='X';
	lee();
	return 0;
}