Cod sursa(job #819813)

Utilizator avramavram andrei marius avram Data 19 noiembrie 2012 18:51:50
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.41 kb
#include<fstream>
using namespace std;
int i,j,a[110][110],b[110][110],ic,jc,iv,jv,c[2][10010],cc[2][10010],n,m,x1,x2,y1,y2,p,u,d,mini;
int d1[]={0,0,1,-1};
int d2[]={1,-1,0,0};
char s[110];
ifstream f("rj.in");
ofstream g("rj.out");
int main()
{
	f>>n>>m;
	for(i=1;i<=n;i++)
	{
		f.get();
		f.get(s+1,110);
		for(j=1;j<=m;j++)
		{
			if(s[j]=='X')
			{
				a[i][j]=b[i][j]=-1;
			}
			if(s[j]=='R')
			{
				x1=i;
				y1=j;
				a[i][j]=-2;
			}
			if(s[j]=='J')
			{
				x2=i;
				y2=j;
				a[i][j]=-3;
			}
		}
		
	}
	
	f.close();
	p=u=1;
	c[0][1]=x1;
	c[1][1]=y1;
	a[x1][y1]=1;
	while(p<=u)
	{
		ic=c[0][p];
		jc=c[1][p];
		for(d=0;d<=3;d++)
		{
			iv=ic+d1[d];
			jv=jc+d2[d];
			if(iv>0&&jv>0&&iv<=n&&jv<=m&&a[i][j]!=-1&&a[iv][jv]==0)
			{
				u++;
				c[0][u]=iv;
				c[1][u]=jv;
				a[iv][jv]=a[ic][jc]+1;
			}
		}
		p++;
	}
	
	p=u=1;
	cc[0][1]=x2;
	cc[1][1]=y2;
	b[x2][y2]=1;
	while(p<=u)
	{
		ic=cc[0][p];
		jc=cc[1][p];
		for(d=0;d<=3;d++)
		{
			iv=ic+d1[d];
			jv=jc+d2[d];
			if(iv>0&&jv>0&&iv<=n&&jv<=m&&b[i][j]!=-1&&b[iv][jv]==0)
			{
				u++;
				cc[0][u]=iv;
				cc[1][u]=jv;
				b[iv][jv]=b[ic][jc]+1;
			}
		}
		p++;
	}
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
		{
			if(a[i][j]==b[i][j]&&mini<a[i][j]&&a[i][j]>0)
			{
				mini=a[i][j];
				x1=i;
				x2=j;
			}
		}
		
	}
	
	g<<mini-1<<" "<<x1<<" "<<x2;
	return 0;
	
}