Cod sursa(job #2675384)

Utilizator ana_valeriaAna Valeria Duguleanu ana_valeria Data 21 noiembrie 2020 15:54:18
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.26 kb
#include <fstream>

using namespace std;
ifstream cin ("rj.in");
ofstream cout ("rj.out");
int ar[110][110],aj[110][110],dirL[8]={-1,-1,0,1,1,1,0,-1},dirC[8]={0,1,1,1,0,-1,-1,-1};
struct ura
{
    int l,c;
};
ura coada[10010];
int main()
{
    int n,m,i,j,lr,cr,lj,cj,tmin,lmin,cmin,lin,col,inc,sf,pp;
    char ch;
    cin>>n>>m;
    cin.get(ch);
    for (i=1; i<=n; i++)
    {
        pp=0;
        for (j=1; j<=m && pp==0; j++)
        {
            cin.get(ch);
            if (ch=='X')
            {
                ar[i][j]=-1;
                aj[i][j]=-1;
            }
            if (ch=='R')
            {
                lr=i;
                cr=j;
            }
            if (ch=='J')
            {
                lj=i;
                cj=j;
            }
            if (ch=='\n')
                pp=1;
        }
        if (pp==0)
            cin.get(ch);
    }
    for (i=0; i<=n+1; i++)
        ar[i][0]=ar[i][m+1]=aj[i][0]=aj[i][m+1]=-1;
    for (j=0; j<=m+1; j++)
        ar[0][j]=ar[n+1][j]=aj[0][j]=aj[n+1][j]=-1;
    ///lee romeo
    inc=sf=1;
    ar[lr][cr]=1;
    coada[1].l=lr;
    coada[1].c=cr;
    while (inc<=sf)
    {
        for (i=0; i<=7; i++)
        {
            lin=coada[inc].l+dirL[i];
            col=coada[inc].c+dirC[i];
            if (ar[lin][col]==0)
            {
                sf++;
                coada[sf].l=lin;
                coada[sf].c=col;
                ar[lin][col]=ar[coada[inc].l][coada[inc].c]+1;
            }
        }
        inc++;
    }
    ///lee julieta
    inc=sf=1;
    aj[lj][cj]=1;
    coada[1].l=lj;
    coada[1].c=cj;
    while (inc<=sf)
    {
        for (i=0; i<=7; i++)
        {
            lin=coada[inc].l+dirL[i];
            col=coada[inc].c+dirC[i];
            if (aj[lin][col]==0)
            {
                sf++;
                coada[sf].l=lin;
                coada[sf].c=col;
                aj[lin][col]=aj[coada[inc].l][coada[inc].c]+1;
            }
        }
        inc++;
    }
    tmin=10010;
    for (i=1; i<=n; i++)
        for (j=1; j<=m; j++)
            if (ar[i][j]==aj[i][j] && ar[i][j]>0)
                if (ar[i][j]<tmin)
                {
                    tmin=ar[i][j];
                    lmin=i;
                    cmin=j;
                }
    cout<<tmin<<" "<<lmin<<" "<<cmin;
    return 0;
}