Cod sursa(job #1900830)

Utilizator ionanghelinaIonut Anghelina ionanghelina Data 3 martie 2017 16:48:38
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 6.39 kb
#include<cstdio>
using namespace std;
int n,m,j,lr,cr,lj,cj;
int a[105][105],b[105][105],coada[10000][2],minim=100005,imin,jmin;
int main()
{
    freopen("rj.in","r",stdin);
    freopen("rj.out","w",stdout);
    scanf("%d%d",&n,&m);
    scanf("\n");
    for (int i=1;i<=n;i++)
    {
       // memset(s,0,105);
        j=0;
        char c='1';
        while (c!='\n')
        {
            scanf("%c",&c);
            if (c!='\n')
            {
             j++;
             if (c=='X') a[i][j]=-1;
                    else
            if (c=='R')
            {
                lr=i;
                cr=j;
            }
                else
            if (c=='J')
            {
                lj=i;
                cj=j;
            }
                    else
                    a[i][j]=-2;
            }
        }
    }
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=m;j++)
         //   printf("%d ",a[i][j]);
                b[i][j]=a[i][j];
    //    printf("\n");
    }
  //  printf("%d %d",lj,cj);

    for (int i=0;i<=m+1;i++)
    {
        a[0][i]=-1;
        b[0][i]=-1;
        a[n+1][i]=-1;
        b[n+1][i]=-1;
    }
    for (int i=0;i<=n+1;i++)
    {
        a[i][0]=-1;
        b[i][0]=-1;
        a[i][m+1]=-1;
        b[i][m+1]=-1;
    }
    int dmin=1,dmax=2;
    coada[dmin][1]=lr;
    coada[dmin][2]=cr;
    a[lr][cr]=1;
   /* for (int i=0;i<=n+1;i++)
        {
        for (int j=0;j<=m+1;j++)
            printf("%d ",a[i][j]);
        printf("\n");
        }*/
   while (dmin<dmax)
    {
        if (a[coada[dmin][1]-1][coada[dmin][2]]==-2)
        {
            coada[dmax][1]=coada[dmin][1]-1;
            coada[dmax][2]=coada[dmin][2];
            a[coada[dmax][1]][coada[dmax][2]]=a[coada[dmin][1]][coada[dmin][2]]+1;
            dmax++;
        }
        if (a[coada[dmin][1]+1][coada[dmin][2]]==-2)
        {
            coada[dmax][1]=coada[dmin][1]+1;
            coada[dmax][2]=coada[dmin][2];
            a[coada[dmax][1]][coada[dmax][2]]=a[coada[dmin][1]][coada[dmin][2]]+1;
            dmax++;
        }
        if (a[coada[dmin][1]][coada[dmin][2]-1]==-2)
        {
            coada[dmax][1]=coada[dmin][1];
            coada[dmax][2]=coada[dmin][2]-1;
            a[coada[dmax][1]][coada[dmax][2]]=a[coada[dmin][1]][coada[dmin][2]]+1;
            dmax++;
        }
        if (a[coada[dmin][1]][coada[dmin][2]+1]==-2)
        {
            coada[dmax][1]=coada[dmin][1];
            coada[dmax][2]=coada[dmin][2]+1;
            a[coada[dmax][1]][coada[dmax][2]]=a[coada[dmin][1]][coada[dmin][2]]+1;
            dmax++;
        }
        //
         if (a[coada[dmin][1]-1][coada[dmin][2]-1]==-2)
        {
            coada[dmax][1]=coada[dmin][1]-1;
            coada[dmax][2]=coada[dmin][2]-1;
            a[coada[dmax][1]][coada[dmax][2]]=a[coada[dmin][1]][coada[dmin][2]]+1;
            dmax++;
        }
         if (a[coada[dmin][1]-1][coada[dmin][2]+1]==-2)
        {
            coada[dmax][1]=coada[dmin][1]-1;
            coada[dmax][2]=coada[dmin][2]+1;
            a[coada[dmax][1]][coada[dmax][2]]=a[coada[dmin][1]][coada[dmin][2]]+1;
            dmax++;
        }
         if (a[coada[dmin][1]+1][coada[dmin][2]-1]==-2)
        {
            coada[dmax][1]=coada[dmin][1]+1;
            coada[dmax][2]=coada[dmin][2]-1;
            a[coada[dmax][1]][coada[dmax][2]]=a[coada[dmin][1]][coada[dmin][2]]+1;
            dmax++;
        }
         if (a[coada[dmin][1]+1][coada[dmin][2]+1]==-2)
        {
            coada[dmax][1]=coada[dmin][1]+1;
            coada[dmax][2]=coada[dmin][2]+1;
            a[coada[dmax][1]][coada[dmax][2]]=a[coada[dmin][1]][coada[dmin][2]]+1;
            dmax++;
        }
        //
    dmin++;
    }


    //////

    dmin=1,dmax=2;
    coada[dmin][1]=lj;
    coada[dmin][2]=cj;
    b[lj][cj]=1;
       while (dmin<dmax)
    {
        if (b[coada[dmin][1]-1][coada[dmin][2]]==-2)
        {
            coada[dmax][1]=coada[dmin][1]-1;
            coada[dmax][2]=coada[dmin][2];
            b[coada[dmax][1]][coada[dmax][2]]=b[coada[dmin][1]][coada[dmin][2]]+1;
            dmax++;
        }
        if (b[coada[dmin][1]+1][coada[dmin][2]]==-2)
        {
            coada[dmax][1]=coada[dmin][1]+1;
            coada[dmax][2]=coada[dmin][2];
            b[coada[dmax][1]][coada[dmax][2]]=b[coada[dmin][1]][coada[dmin][2]]+1;
            dmax++;
        }
        if (b[coada[dmin][1]][coada[dmin][2]-1]==-2)
        {
            coada[dmax][1]=coada[dmin][1];
            coada[dmax][2]=coada[dmin][2]-1;
            b[coada[dmax][1]][coada[dmax][2]]=b[coada[dmin][1]][coada[dmin][2]]+1;
            dmax++;
        }
        if (b[coada[dmin][1]][coada[dmin][2]+1]==-2)
        {
            coada[dmax][1]=coada[dmin][1];
            coada[dmax][2]=coada[dmin][2]+1;
            b[coada[dmax][1]][coada[dmax][2]]=b[coada[dmin][1]][coada[dmin][2]]+1;
            dmax++;
        }
        //
         if (b[coada[dmin][1]-1][coada[dmin][2]-1]==-2)
        {
            coada[dmax][1]=coada[dmin][1]-1;
            coada[dmax][2]=coada[dmin][2]-1;
            b[coada[dmax][1]][coada[dmax][2]]=b[coada[dmin][1]][coada[dmin][2]]+1;
            dmax++;
        }
         if (b[coada[dmin][1]-1][coada[dmin][2]+1]==-2)
        {
            coada[dmax][1]=coada[dmin][1]-1;
            coada[dmax][2]=coada[dmin][2]+1;
            b[coada[dmax][1]][coada[dmax][2]]=b[coada[dmin][1]][coada[dmin][2]]+1;
            dmax++;
        }
         if (b[coada[dmin][1]+1][coada[dmin][2]-1]==-2)
        {
            coada[dmax][1]=coada[dmin][1]+1;
            coada[dmax][2]=coada[dmin][2]-1;
            b[coada[dmax][1]][coada[dmax][2]]=b[coada[dmin][1]][coada[dmin][2]]+1;
            dmax++;
        }
         if (b[coada[dmin][1]+1][coada[dmin][2]+1]==-2)
        {
            coada[dmax][1]=coada[dmin][1]+1;
            coada[dmax][2]=coada[dmin][2]+1;
            b[coada[dmax][1]][coada[dmax][2]]=b[coada[dmin][1]][coada[dmin][2]]+1;
            dmax++;
        }
        //
    dmin++;
    }






    ////
    a[lr][cr]=-1;
    b[lj][cj]=-1;
     for (int i=1;i<=n;i++)
        {
        for (int j=1;j<=m;j++)
           if (a[i][j]==b[i][j] && a[i][j]>0)
           {
               if (a[i][j]<minim) minim=a[i][j],imin=i,jmin=j;
           }
        }
    printf("%d %d %d\n",minim,imin,jmin);
    return 0;
}