Cod sursa(job #2710621)

Utilizator BriannaBrianna Stan Brianna Data 22 februarie 2021 19:49:59
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include<stdio.h>
int y[150][150],z[150][150],m,n,p[10000],q[10000],c,d,i,j,u,v,o,r,k,l,t=10000,a[]= {-1,-1,-1,1,1,1,0,0},b[]= {0,1,-1,0,1,-1,1,-1};
char s[150];
void H(int x[][150],int i,int j)
{
    for(int k=0; k<8; k++)
        if(!x[i+a[k]][j+b[k]])
            x[i+a[k]][j+b[k]]=x[i][j]+1,p[d]=i+a[k],q[d++]=j+b[k];
}
int main()
{
    freopen("rj.in","r",stdin),freopen("rj.out","w",stdout),scanf("%d%d\n",&m,&n);
    for(i=1; i<=m; i++)
    {
        fgets(s,150,stdin);
        for(j=1; j<=n; j++)

            if(s[j-1]=='X')

                y[i][j]=z[i][j]=10000;

            else
                if(s[j-1]=='R')
                u=i,v=j,y[i][j]=1;
            else
            if(s[j-1]=='J')
                o=i,r=j,z[i][j]=1;
    }
    for(i=0; i<=m+1; i++)
        y[i][0]=y[i][n+1]=z[i][0]=z[i][n+1]=10000;

    for(j=0; j<=n+1; j++)
        y[0][j]=y[m+1][j]=z[0][j]=z[m+1][j]=10000;

    for(p[d]=u,q[d++]=v; c<d; i=p[c],j=q[c++],H(y,i,j));
    for(c=d=0,p[d]=o,q[d++]=r; c<d; i=p[c],j=q[c++],H(z,i,j));
    for(i=1; i<=m; i++)
        for(j=1; j<=n; j++)
            if(y[i][j]==z[i][j]&&y[i][j]&&z[i][j]<t)
                t=z[i][j],k=i,l=j;
    printf("%d %d %d",t,k,l);