Cod sursa(job #368030)

Utilizator ProcopliucProcopliuc Adrian Procopliuc Data 23 noiembrie 2009 21:24:20
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.9 kb
# include <stdio.h>
int a[105][105],t[10005],i,j,n,m,x[10005],y[10005],xf,yf,k,p,u,tmin,ok,minx=32000,miny=32000,xff,yff;
char ch,sir[1000];
  int q[10]={0,1,-1,0,0,-1,-1,1,1};
  int w[10]={0,0,0,-1,1,-1,1,-1,1};

void verif ()
{

 x[1]=i;
 y[1]=j;
 p=1;
 u=1;
	      ok=0;
 while (p<=u)
 {


   for (k=1;k<=8;k++)
   {

     i=x[p];
     j=y[p];

     i=i+q[k];
     j=j+w[k];
    if (a[i][j]+1==a[x[p]][y[p]])
    {
     u++;

     x[u]=i;
     y[u]=j;
     t[u]=a[i][j];
    }







   }

   a[x[p]][y[p]]=-32000;
   p++;

 }

 for (i=1;i<=u;i++)
 if (t[i]==tmin)
 {
  if (x[i]<minx)
   {
    minx=x[i];
    miny=32000;
    xff=x[i];
    yff=y[i];
   }

  if (x[i]==minx)
   if (y[i]<miny)
    {
     miny=y[i];
     yff=y[i];
    }
 }
 }













int main ()
{
freopen ("rj.in","r",stdin);
freopen ("rj.out","w",stdout);
scanf ("%i%i",&n,&m);
scanf ("%c",&ch);
for (i=1;i<=n;i++)
{
 for (j=0;j<=m;j++)
 sir[j]=0;
fgets (sir,115,stdin);
 for (j=0;j<m;j++)
{
 ch=sir[j];


   if (ch=='R')
 {
 x[1]=i;
 y[1]=j+1;
 a[i][j+1]=1;
 }

 if (ch=='J')
 a[i][j+1]=-2;

 if (ch=='X')
 a[i][j+1]=-1;
 if (ch==' ')
 a[i][j+1]=0;

 }

 }
 for (i=0;i<=m+1;i++)
 {
 a[0][i]=-1;
 a[n+1][i]=-1;
 }
 for (i=0;i<=n+1;i++)
 {
 a[i][0]=-1;
 a[i][m+1]=-1;
 }




    p=1;
    u=1;
	    ok=0;
 while (p<=u && ok==0)
 {


   for (k=1;k<=8;k++)
   {

     i=x[p];
     j=y[p];

     i=i+q[k];
     j=j+w[k];
    if (a[i][j]==0)
    {
     u++;
     a[i][j]=1+a[x[p]][y[p]];
     x[u]=i;
     y[u]=j;
    }

     if (a[i][j]==-2 && a[x[p]][y[p]]%2==0)
     {
      ok=1;
      xf=i;
      yf=j;
      a[i][j]=1+a[x[p]][y[p]];
      tmin=(a[x[p]][y[p]]+2)/2;
      printf ("%i ",tmin);

     }

   }

   p++;

 }


 i=xf;
 j=yf;

 verif ();
	   printf ("%i %i",xff,yff);






 return 0;
}