Cod sursa(job #222737)

Utilizator c_e_manuEmanuel Cinca c_e_manu Data 24 noiembrie 2008 21:30:08
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include<fstream.h>

int n,m,x[9]={0,-1,-1,0,1,1,1,0,-1},y[9]={0,1,1,1,0,-1,-1,-1},xf,yf,tmin,
tr[102][102],tj[102][102];
char a[102][102];

ifstream fin("rj.in");
ofstream fout("rj.out");

void tras(int t[102][102]);
void read()
{	int i,j;char aux[101];
	fin>>n>>m;
	for(i=1;i<=n;i++)
	{       fin.get();
		fin.get(aux,100);
		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]=' ';
				}
			}
	}
	for(i=0;i<=n+1;i++)
	{	a[0][i]='X';
		a[i][n+1]='X';
	}
	for(i=0;i<=m+1;i++)
	{	a[i][0]='X';
		a[m+1][i]='X';
	}
}

int main()
{       int i,j;
	read();
	tras(tr);
	tras(tj);
	tmin=32000;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			if(tr[i][j]==tj[i][j]&&tr[i][j]!=0&&tr[i][j]<tmin)
			{	xf=i;
				yf=j;
				tmin=tr[i][j];
			}
	fout<<tmin-1<<' '<<xf<<' '<<yf;
	return 0;
}
void tras(int t[102][102])
{       int i,j,sw=0,min,ii,jj;
	while(!sw)
	{       sw=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;sw=0;}
				}
	}
}