Cod sursa(job #688764)

Utilizator EternalHeroeEternal Heroe EternalHeroe Data 23 februarie 2012 20:11:36
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include<fstream>
ifstream f("rj.in");
ofstream g("rj.out");
using namespace std;
int di[]={0,0,1,-1,1,-1,1,-1};
int dj[]={1,-1,0,0,1,1,-1,-1};
int c1[2][101*101];
int c2[2][101*101];
int R[101][101],J[101][101];
int i,j,n,m,is,js,ic,jc,iv,jv,ifin,jfin,u,p,d,x,y,u2;
int x1,x2,x3;
char t;
int main(){
	f>>n>>m;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
		{
			f>>t;
			if(t==' ')R[i][j]=0;
			J[i][j]=R[i][j];
			if(t=='R')
			{
				R[i][j]=1;
				J[i][j]=2;
				c1[0][1]=i;
				c1[1][1]=j;
			}
			if(t=='J')	
			{
				J[i][j]=1;
				R[i][j]=2;
				c2[0][1]=i;
				c2[1][1]=j;
			}
		}
	u=1;p=1;u2=1;
	while(p<=u)
	{
		ic=c1[0][p];
		jc=c1[1][p];
		for(d=0;d<=7;d++)
		{
			iv=ic+di[d];
			jv=jc+dj[d];
			if(iv>=1 && iv<=n && jv>=1 && jv<=n && R[iv][jv]==0)
			{
				u++;
				c1[0][u]=iv;
				c1[1][u]=jv;
				R[iv][jv]=R[ic][jc]+1;
			}
		}
		
		ic=c2[0][p];
		jc=c2[1][p];
		for(d=0;d<=7;d++)
		{
			iv=ic+di[d];
			jv=jc+dj[d];
			if(iv>=1 && iv<=n && jv>=1 && jv<=n && J[iv][jv]==0)
			{
				u2++;
				c2[0][u2]=iv;
				c2[1][u2]=jv;
				J[iv][jv]=J[ic][jc]+1;
				if(J[iv][jv]==R[iv][jv])
				{
					p=u+1;
					x1=J[iv][jv];
					x2=iv;
					x3=jv;
					break;
				}
			}
		}
		p++;
	}
	g<<x1<<" "<<x2<<" "<<x3;
	return 0;
	
}