Cod sursa(job #727915)

Utilizator ms-ninjacristescu liviu ms-ninja Data 28 martie 2012 12:54:02
Problema Rj Scor 100
Compilator cpp Status done
Runda 9_3 Marime 1.65 kb
#include <fstream>

using namespace std;

#define dim 102
	
int r[dim][dim], ju[dim][dim], coada[dim*dim][2], inc, sf, ad[5*dim][2], bun, nrad,n,m,sx,sy,px,py;

int dx[]={-1, 1, 0, 0,1,1,-1,-1};
int dy[]={0, 0, -1, 1,1,-1,1,-1};


	
ifstream fin("rj.in");
ofstream fout("rj.out");
	
	
void Citire()
{
	char c;
	int i, j;
	fin>>n >>m;
	
	for(i=1;i<=n;++i)
		for(j=1;j<=m;++j)
		{
			r[i][j]=-1;
			ju[i][j]=-1;
		}
		
	for(i=1;i<=n;++i)
	{
		c=fin.get();
		for(j=1;j<=m;++j)
		{
			c=fin.get();
			if(c=='X')
			{
			r[i][j]=-2;
			ju[i][j]=-2;
			}
			if(c=='R')
			{
				r[i][j]=0;
				sx=i;
				sy=j;
				
			}
			if(c=='J')
				{
					ju[i][j]=0;
					px=i;
					py=j;
				}
		}
	}
}




void Lee(int a[dim][dim])
{
	inc=1;
	while(inc<=sf)
	{
		int x0=coada[inc][0];
		int y0=coada[inc][1];
		int pas=a[x0][y0];
		
		for(int k=0;k<8;++k)
		{
			int x=x0+ dx[k];
			int y=y0+dy[k];
			
			if(a[x][y]==-1)
			{
				a[x][y]=pas+1;
				++sf;
				coada[sf][0]=x;
				coada[sf][1]=y;
			}
		}
		++inc;
	}
}

void scrie(int a[dim][dim], int N, int M)
{
	for(int i=1;i<=N;++i)
	{
		for(int j=1;j<=M;++j)
			fout<<a[i][j]<<" ";
		
		fout<<'\n';
	}
	fout << '\n';
}

int main()
{
	Citire();
	
	sf = 1;
	coada[sf][0] = sx;
	coada[sf][1] = sy;
	
	Lee(r);
	

	
	sf = 1;
	coada[sf][0] = px;
	coada[sf][1] = py;
	

	
	Lee(ju);
	

	int min = dim*dim, x, y;
	
	for (int  i = 1; i <= n; ++ i)
		for (int j = 1; j <= m; ++ j)
			if ( r[i][j] > 0 && r[i][j] == ju[i][j] && r[i][j] < min )
				min = r[i][j], x = i, y = j;
			
	fout << min+1 << " " << x << " " << y;		
	return 0;
}