Cod sursa(job #366263)

Utilizator ProcopliucProcopliuc Adrian Procopliuc Data 21 noiembrie 2009 13:49:41
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
# include <stdio.h>
int a[105][105],i,j,n,m,x[10005],y[10005],xf,yf,k,p,u,tmin,ok;
char ch,sir[100];
  int q[10]={0,1,-1,0,0,-1,-1,1,1};
  int w[10]={0,0,0,-1,1,-1,1,-1,1};

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++)
{
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;

 while (p<=m)
 {


   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)
     {
      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;
 while (ok==0)

  for (k=1;k<=8;k++)
  {
   i=xf;
   j=yf;

   i=i+q[k];
   j=j+w[k];
   if (a[i][j]==a[xf][yf]-1)
   {
    if (a[i][j]==tmin)
    {
     printf ("%i %i",i,j);
     ok=1;
    }
   xf=i;
   yf=j;

   break;

   }
  }





 return 0;
}