Cod sursa(job #486757)

Utilizator loginLogin Iustin Anca login Data 22 septembrie 2010 18:55:55
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 kb
#include<string.h>
#include<fstream.h>
int dl[8]={-1,-1,0,1,1,1,0,-1};
int dc[8]={0,1,1,1,0,-1,-1,-1};
char c[150][150];
long n,m,a[150][150],x[50010],y[50010],d[50010],li,co,lj,cj,lr,cr,b[150][150];
void cit()
{ifstream fin("rj.in");
  fin>>n>>m;
  long i,j;
  fin.get();
   for(i=1;i<=n;i++)
   { for(j=1;j<=m;j++)
	   fin.get(c[i][j]);
    fin.get();
   }
 fin.close();
}
ofstream fout("rj.out");
void lee1(long lr,long cr)
{long dd,d1,p,u,i,j,l,c1,k,h,q;
 p=u=1;
 x[p]=lr;
 y[p]=cr;
 d[p]=1;
 a[lr][cr]=1;
 do
 {l=x[p];
  c1=y[p];
  d1=d[p];
   for(k=0;k<=7;k++)
   {i=l+dl[k];
    j=c1+dc[k];
	dd=d1+1;
	 if(i<=n&&i>=1&&j<=m&&j>=1&&c[i][j]==' '&&a[i][j]==0)
	  {u++;
	   x[u]=i;
	   y[u]=j;
	   d[u]=dd;
	   a[i][j]=dd;
	   
	  }
   }
  p++;
 }
 while(p<=u);
} 
void lee2(long lr,long cr)
{long dd,d1,p,u,i,j,l,c1,k,h,q;
 p=u=1;
 x[p]=lr;
 y[p]=cr;
 d[p]=1;
 b[lr][cr]=1;
 do
 {l=x[p];
  c1=y[p];
  d1=d[p];
   for(k=0;k<=7;k++)
   {i=l+dl[k];
    j=c1+dc[k];
	dd=d1+1;
	 if(i<=n&&i>=1&&j<=m&&j>=1&&c[i][j]==' '&&b[i][j]==0)
	  {u++;
	   x[u]=i;
	   y[u]=j;
	   d[u]=dd;
	   b[i][j]=dd;
	   
	  }
   }
  p++;
 }
 while(p<=u);
} 
void afis()
{long i,j;
 fout<<a[li][co]<<" "<<li<<" "<<co<<" "<<'\n';
}
int main()
{cit();
 long i,j,min=25000;
  for(i=1;i<=n;i++)
   for(j=1;j<=m;j++)
	   if(c[i][j]=='R')
	    {lr=i;
	     cr=j;
		}
		else
			if(c[i][j]=='J')
			{cj=j;
			 lj=i;
			}
 
 lee1(lr,cr);
 
 lee2(lj,cj);
 for(i=1;i<=n;i++)
  {for(j=1;j<=m;j++)
     if(b[i][j]==a[i][j]&&a[i][j]>1&&a[i][j]<min)
	 {min=a[i][j]; 
	  li=i;
      co=j;
	 }	  
 }   
 afis();
 fout.close();
 return 0;
}