Cod sursa(job #503097)

Utilizator myshuSpatariu Mihai-Constantin myshu Data 21 noiembrie 2010 14:19:16
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<fstream.h>
int xx[9]={0,-1,-1,-1,0,0,1,1,1},yy[9]={0,-1,0,1,-1,1,-1,0,1},a[102][102];
int main ()
{
	ifstream fcin("rj.in");
	ofstream fcout("rj.out");
	int n,m,i,j,ci[10000],cj[10000],xj,yj,p,u,z;
	char s[102][102];
	fcin>>n>>m;
	for(i=1;i<=n;i++)
			fcin.getline(s[i],n);
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			 if(s[i][j]==' ')a[i][j]=-2;
			 else if(s[i][j]=='X')a[i][j]=-1;
			 else if(s[i][j]=='R'){ci[1]=i;cj[1]=j;a[i][j]=1;}
			 else {xj=i;yj=j;a[i][j]=-2;}
	p=1;u=1;
	while(p<=u)
		{if(ci[p]==xj&&cj[p]==yj)break;
		for(i=1;i<=8;i++)
			if(a[ci[p]+xx[i]][cj[p]+yy[i]]==-2){a[ci[p]+xx[i]][cj[p]+yy[i]]=a[ci[p]][cj[p]]+1;ci[++u]=ci[p]+xx[i];cj[u]=cj[p]+yy[i];}
		p++;}
	z=a[xj][yj]/2+a[xj][yj]%2;
	fcout<<z<<' ';
	while(a[xj][yj]!=z)
		for(i=1;i<=8;i++)
			if(a[xj+xx[i]][yj+yy[i]]+1==a[xj][yj]){xj=xj+xx[i];yj=yj+yy[i];break;}
	fcout<<xj<<' '<<yj<<'\n';
	return 0;
}