Cod sursa(job #222728)

Utilizator gabor_oliviu1991gaboru corupt gabor_oliviu1991 Data 24 noiembrie 2008 21:04:18
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include<fstream.h>

int n,m,i,j,tr[100][100],tj[100][100],x[10]={0,-1,-1,0,1,1,1,0,-1},y[10]={0,0,1,1,1,0,-1,-1,-1};
char a[100][100];

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

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

	char aux[100];

	f>>n>>m;
	for(i=1;i<=n;i++)
	{
		f.get();
		f.get(aux,99);
		for(j=0;j<m;j++)
			{
				a[i][j+1]=aux[j];
				if(aux[j]=='R')
					tr[i][j+1]=1;
				if(aux[j]=='J')
					tj[i][j+1]=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[0][i]='X',a[m+1][i]='X';

	traseu(tr);
	traseu(tj);

	/*for(i=1;i<=n;i++)
		{
			for(j=1;j<=m;j++)
				g<<tr[i][j]<<" ";
			g<<endl;
		}
	g<<endl;
	for(i=1;i<=n;i++)
		{
			for(j=1;j<=m;j++)
				g<<tj[i][j]<<" ";
			g<<endl;
		} */

	int si,sj,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&&tr[i][j]<min)
				{  si=i;sj=j;min=tr[i][j];	}

	g<<min<<" "<<si<<" "<<sj;

return 0;
}


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

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;}
		   }
}
}