Cod sursa(job #368656)

Utilizator mihai_voiVoicescu Mihai mihai_voi Data 25 noiembrie 2009 12:21:59
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
#include<fstream.h>
#include<stdio.h>
int vizr[101][101],vizj[101][101],c[1][10001];
int main()
{
	char n,m,a[101][101],d[8];
	int min=9999,b[1],i,j,p,u,x1,x2,y1,y2;
	ifstream f("rj.in");
	ofstream g("rj.out");
	f>>n>>m;
	for(i=0;i<=n+1;i++)
	{
		for(j=0;j<=m+1;j++)
		{
			if(i==0||i==n+1||j==0||j==m+1)
			{
				a[i][j]='X';
			}
			a[i][j]=f.get();
			if(a[i][j]=='R')
			{
				x1=i;
				y1=j;
			}
			if(a[i][j]=='J')
			{
				x2=i;
				y2=j;
			}
		}
	}
	c[0][1]=x1;
	c[1][1]=y1;
	vizr[x1][y1]=0;
	p=u=1;
	while(p!=u+1)
	{
		for(i=-1;i<=1;i++)
		{
			for(j=-1;j<=1;j++)
			{
				if(vizr[c[0][(p+i)]][c[1][(p+j)]]!=0)
				{
					u++;
					c[0][u]=c[0][(p+i)];
					c[1][u]=c[1][(p+j)];
					vizr[c[0][(p+i)]][c[1][(p+j)]]=vizr[c[0][p]][c[1][p]]+1;
				}
			}
		}
		p++;
	}
	c[0][1]=x2;
	c[1][1]=y2;
	vizj[x2][y2]=0;
	p=u=1;
	while(p!=u+1)
	{
		for(i=-1;i<=1;i++)
		{
			for(j=-1;j<=1;j++)
			{
				if(vizj[c[0][(p+i)]][c[1][(p+j)]]!=0)
				{
					u++;
					c[0][u]=c[0][(p+i)];
					c[1][u]=c[1][(p+j)];
					vizj[c[0][(p+i)]][c[1][(p+j)]]=vizj[c[0][p]][c[1][p]]+1;
				}
			}
		}
		p++;
	}
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
		{
			if(vizr[i][j]==vizj[i][j])
			{
				if(vizr[i][j]<min) 
				{
					min=vizr[i][j];
					b[0]=i;
					b[1]=j;
				}
			}
		}
	}
	f>>min>>b[0]>>b[1];
	return 0;
}