Cod sursa(job #366313)

Utilizator ProcopliucProcopliuc Adrian Procopliuc Data 21 noiembrie 2009 15:15:31
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.52 kb
# include <stdio.h>
int a[105][15],i,j,n,m,x[10005],y[10005],xf,yf,k,p,u,tmin,ok,minx=32000,miny=32000,xff,yff;
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};

void verif (int i,int j)
{

int k;
if (a[i][j]==tmin)
{
if (i<minx)
{
minx=i;   xff=i; yff=j;
miny=32000;
}
if (i==minx)
if (miny>j)
{
xff=i;
yff=j;
miny=j;

 }
}


for (k=1;k<=8;k++)
if (a[i+q[k]][j+w[k]]==a[i][j]-1)
verif(i+q[k],j+w[k]);





}


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

 }




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






 return 0;
}