Cod sursa(job #284219)

Utilizator diana_7Nica Lorela-Diana diana_7 Data 21 martie 2009 11:24:45
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.77 kb
#include<iostream.h>
#include<fstream.h>
#include<string.h>

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

int R[101][101],J[101][101];
int n,m,xr,yr,xj,yj;

void marcare(int A[101][101],int i,int j,int t)
{
	if(i>1&&j>1&&(A[i-1][j-1]==0||(A[i-1][j-1]>0&&t<A[i-1][j-1])))A[i-1][j-1]=t,marcare(A,i-1,j-1,t+1);
	if(i>1&&(A[i-1][j]==0||(A[i-1][j]>0&&t<A[i-1][j])))A[i-1][j]=t,marcare(A,i-1,j,t+1);
	if(i>1&&j<m&&(A[i-1][j+1]==0||(A[i-1][j+1]>0&&t<A[i-1][j+1])))A[i-1][j+1]=t,marcare(A,i-1,j+1,t+1);
	if(j>1&&(A[i][j-1]==0||(A[i][j-1]>0&&t<A[i][j-1])))A[i][j-1]=t,marcare(A,i,j-1,t+1);
	if(j<m&&(A[i][j+1]==0||(A[i][j+1]>0&&t<A[i][j+1])))A[i][j+1]=t,marcare(A,i,j+1,t+1);
	if(i<n&&j>1&&(A[i+1][j-1]==0||(A[i+1][j-1]>0&&t<A[i+1][j-1])))A[i+1][j-1]=t,marcare(A,i+1,j-1,t+1);
	if(i<n&&(A[i+1][j]==0||(A[i+1][j]>0&&t<A[i+1][j])))A[i+1][j]=t,marcare(A,i+1,j,t+1);    	if(i<n&&j<m&&(A[i+1][j+1]==0||(A[i+1][j+1]>0&&t<A[i+1][j+1])))A[i+1][j+1]=t,marcare(A,i+1,j+1,t+1);

}		

int main ()
{
	int i,j,min=30000,minx,miny;
    char c;
	char *aux=new char[101];
	f>>n>>m;
	f.get();
	for(i=1;i<=n;i++)
	{
		f.get(aux,100);
		f.get();
		for(j=0;j<strlen(aux);j++)
		{
			if(isspace(aux[j]))R[i][j+1]=0,J[i][j+1]=0;
			else if(aux[j]=='R')R[i][j+1]=-2,J[i][j+1]=-2,xr=i,yr=j+1;
			    else if(aux[j]=='J')R[i][j+1]=-2,J[i][j+1]=-2,xj=i,yj=j+1;
					else R[i][j+1]=-5,J[i][j+1]=-5;
		}
	}
	marcare(R,xr,yr,2);
	marcare(J,xj,yj,2);
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++) if(R[i][j]>0&&R[i][j]==J[i][j]&&R[i][j]<min)min=R[i][j],minx=i,miny=j;
	g<<min<<" "<<minx<<" "<<miny<<'\n';
	/*for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++) g<<R[i][j]<<" ";
		g<<'\n';
	}
	g<<'\n';
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++) g<<J[i][j]<<" ";
		g<<'\n';
	}*/
	f.close();
	g.close();
	return 0;
}