Cod sursa(job #901982)

Utilizator andra.chiperChiper Andra andra.chiper Data 1 martie 2013 12:26:28
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.61 kb
using namespace std;

#include<iostream>
#include<fstream>
#include<string.h>

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

char A[105][105];
int x,y,tmin=100009,i,j,k=0,h=0,Cr[100],Lr[100],Cj[100],Lj[100],n,m,l,xnou,ynou,lin,col,R[100][100],J[100][100],xx,yy,xxnou,yynou;

int dx[]={-1,-1,0,1,1,1,0,-1};
int dy[]={0,1,1,1,0,-1,-1,-1};

int main()
{
	fin>>n;fin>>m;
	for(i=0;i<=n;i++)
		fin.getline(A[i]+1,105);
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
		{
			if(A[i][j]==' ')
			{
				R[i][j]=0;
				J[i][j]=0;
			}
			if(A[i][j]=='X')
			{
				R[i][j]=-1;
				J[i][j]=-1;
			}
			if(A[i][j]=='R')
			{
				R[i][j]=1;
				J[i][j]=0;
				Lr[++k]=i;
				Cr[k]=j;
			}
			if(A[i][j]=='J')
			{
				J[i][j]=1;
				R[i][j]=0;
				Lj[++h]=i;
				Cj[h]=j;
			}
		}
	for(i=0;i<=n+1;i++)
		for(j=0;j<=m+1;j++)
			R[i][0]=J[i][0]=R[0][j]=J[0][j]=R[n+1][j]=J[n+1][j]=R[i][m+1]=J[i][m+1]=-1;
	
	x=Lr[1];y=Cr[1];
	for(i=1;i<=k;i++)
	{
		x=Lr[i];y=Cr[i];
		for(l=0;l<8;l++)
		{
			xnou=x+dx[l];
			ynou=y+dy[l];
			if(R[xnou][ynou]==0)
			{
				R[xnou][ynou]=R[x][y]+1;
				Lr[++k]=xnou;
				Cr[k]=ynou;
			}
		}
	}
	xx=Lj[1];yy=Cj[1];
	for(i=1;i<=h;i++)
	{
		xx=Lj[i];yy=Cj[i];
		for(l=0;l<8;l++)
		{
			xxnou=xx+dx[l];
			yynou=yy+dy[l];
			if(J[xxnou][yynou]==0)
			{
				J[xxnou][yynou]=J[xx][yy]+1;
				Lj[++h]=xxnou;
				Cj[h]=yynou;
			}
		}
	}
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			if(R[i][j]==J[i][j])
				if(R[i][j]>0)
					if(R[i][j]<tmin)
					{
						tmin=R[i][j];
						lin=i;
						col=j;
					}
	fout<<tmin<<" "<<lin<<" "<<col;
	return 0;
}