Cod sursa(job #500343)

Utilizator r0cesStefan Radu r0ces Data 11 noiembrie 2010 22:06:55
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include<fstream.h>
#include<math.h>
#include<iostream.h>
typedef struct{
	int x,y;}COADA;
COADA c[1100];
int a[150][150],b[150][150];
int main()
{
	int p,u,xv,yv,xn,a[177][177],x1,x2,y2,n,m,i,j,z,t,timp;
	int nn,yy;
	int dx[9],dy[9];
	char car;
	dx[1]=-1;dx[2]=0;dx[3]=1;dx[4]=0;dx[5]=-1;dx[6]=1;dx[7]=1;dx[8]=-1;
	dy[1]=0;dy[2]=1;dy[3]=0;dy[4]=-1;dy[5]=1;dy[6]=1;dy[7]=-1;dy[8]=-1;
	ifstream fcin("rj.in");
	ofstream fcout("rj.out");
	fcin>>n>>m;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++){
			fcin>>car;
			if(car=='R'){a[i][j]=1;x1=i;yy=j;}
			else if(car=='J'){b[i][j]=1;x2=i;y2=j;}
			else{
				a[i][j]=0;
				b[i][j]=0;
			}
		}
	p=u=1;
	c[u].x=x1;c[u].y=yy;
	while(p<=u)
	{
		xv=c[p].x;
		yv=c[p].y;
		for(i=1;i<=8;i++)
		{
			xn=xv+dx[i];
			nn=yv+dy[i];
			if(xv>=1&&xv<=n&&yv>=1&&yv<=n&&a[xn][nn]==0)
			{
				a[xn][nn]=a[xv][yv]+1;
				c[++u].x=xn;c[u].y=nn;
			}
		}
		p++;
	}
	p=u=1;
	c[u].x=x2;c[u].y=y2;
	while(p<=u)
	{
		xv=c[p].x;
		yv=c[p].y;
		for(i=1;i<=8;i++)
		{
			xn=xv+dx[i];
			nn=yv+dy[i];
			if(xv>=1&&xv<=n&&yv>=1&&yv<=n&&a[xn][nn]==0)
			{
				b[xn][nn]=b[xv][yv]+1;
				c[++u].x=xn;c[u].y=nn;
			}
		}
		p++;
	}
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			if(a[i][j]==b[i][j]){
				z=i;
				t=j;
				timp=a[i][j];}
	fcout<<timp<<" "<<z<<" "<<t;
	return 0;
}