Cod sursa(job #222718)

Utilizator c_e_manuEmanuel Cinca c_e_manu Data 24 noiembrie 2008 20:23:17
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 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[101][101],tj[101][101];
char a[101][101];

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

void tras(int t[101][101]);
void read()
{	int i,j;
	fin>>n>>m;fin.get();
	for(i=1;i<=n;i++)
	{	for(j=1;j<=m;j++)
		{	fin.get(a[i][j]);
			if(a[i][j]=='R')
			{	tr[i][j]=1;
				a[i][j]=' ';
			}
			if(a[i][j]=='J')
			{	tj[i][j]=1;
				a[i][j]=' ';
			}
		}
		fin.get();
	}
	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];
			}
	for(i=1;i<=n;i++)
	{	for(j=1;j<=m;j++)
			fout<<tr[i][j]<<' ';
		fout<<'\n';
	}
	fout<<'\n';
	fout<<tmin-1<<' '<<xf<<' '<<yf;
	return 0;
}
void tras(int t[101][101])
{       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)
				{	sw=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;
				}
	}
}