Cod sursa(job #2614139)

Utilizator bem.andreiIceman bem.andrei Data 11 mai 2020 12:26:43
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 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);
}