Cod sursa(job #512875)

Utilizator valentina506Moraru Valentina valentina506 Data 14 decembrie 2010 19:03:16
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include<fstream>
using namespace std;
char x;
int n,i,j,m,b[103][103],a[103][103],xi,yi,minim;
int dx[]={-1,-1,0,1,1,1,0,-1};
int dy[]={0,1,1,1,0,-1,-1,-1};
ifstream f("rj.in");
ofstream g("rj.out");
void citire()
{
	f>>n>>m;
	f.get(x);
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
		{
			f.get(x);
			if(x=='X')
			{
				b[i][j]=-1;
				a[i][j]=-1;
			}
			
			else
				if(x=='R')
				{
					b[i][j]=0;
					a[i][j]=10000;

				}
				else
					if(x=='J')
					{
						b[i][j]=10000;
						a[i][j]=0;
					}
				else
					if(x==' ')
					{
						b[i][j]=10000;
						a[i][j]=10000;
					}
			
		}
		f.get(x);
	}
}
void lee(int c[103][103])
{
	int x,y,xx,yy,i,ok=1;
	while(ok)
	{
		ok=0;
		for(x=1;x<=n;x++)
			for(y=1;y<=m;y++)
			{
				if(c[x][y]==10000||c[x][y]==-1)
					continue;
				
				for(i=0;i<8;i++)
				{
					xx=x+dx[i];
					yy=y+dy[i];
					if(c[xx][yy]>c[x][y]+1)
					{
						c[xx][yy]=c[x][y]+1;
						ok=1;
					}
					
						
							
				}
			}
	}
}

void afisare()
{
	minim=10000;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
			if(a[i][j]==b[i][j]&&a[i][j]!=-1&&a[i][j]!=10000&&a[i][j]+1<minim)
			{
				minim=a[i][j]+1;
				xi=i;
				yi=j;
			}
	}
				g<<minim<<" "<<xi<<" "<<yi;

}
int main()
{
	citire();
	lee(a);
	lee(b);
	afisare();
	return 0;
}