Cod sursa(job #226592)

Utilizator gabor_oliviu1991gaboru corupt gabor_oliviu1991 Data 2 decembrie 2008 00:44:48
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include<fstream.h>

int tr[102][102],tj[102][102],x[10]={0,-1,-1,0,1,1,1,0,-1},y[10]={0,0,1,1,1,0,-1,-1,-1};
char a[102][102];
int si,sj,min=32000,n,m,i,j;

ifstream f("rj.in");
ofstream g("rj.out");

void traseu(int t[102][102]);

void citire()
{
	char aux[102];
	f>>n>>m;
	for(i=1;i<=n;i++)
	{
		f.get();
		f.get(aux,101);
		for(j=0;j<m;j++)
			{
				a[i][j+1]=aux[j];
				if(aux[j]=='R')
					tr[i][j+1]=1,a[i][j+1]=' ';
				if(aux[j]=='J')
					tj[i][j+1]=1,a[i][j+1]=' ';
			}
	}
}

int main()
{


	citire();

	for(i=0;i<=n+1;i++)
		a[i][0]='X',a[m+1][i]='X';
	for(i=0;i<=m+1;i++)
		a[0][i]='X',a[n+1][i]='X';

	traseu(tr);
	traseu(tj);


	min=32000;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			if(tr[i][j]==tj[i][j] && tr[i][j]>0)
                		if(min<tr[i][j])  
                			min=tr[i][j],si=i,sj=j;  
	g<<min<<" "<<si<<" "<<sj;

return 0;
}


void traseu(int t[102][102])
{

int i,j,ii,jj,min,ok=0;

while(ok!=1)
{
	ok=1;
	for(i=1;i<=n;i++)
	     for(j=1;j<=m;j++)

		if(a[i][j]==' '&&t[i][j]==0)
		   {
			min=32000;

			for(int k=1;k<=8;k++)
			{
				ii=i+x[k];
				jj=j+y[k];
				if(t[ii][jj]<min&&t[ii][jj]>0)
					min=t[ii][jj];
			}
			if(min<32000)
				{t[i][j]=min+1;ok=0;}
		   }
}}