Cod sursa(job #3001050)

Utilizator IoannnnnnnnnnnRotaru Ioan Ioannnnnnnnnnn Data 13 martie 2023 10:31:07
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.84 kb
#include <fstream>
using namespace std;
ifstream cin("rj.in");
ofstream cout("rj.out");
struct romeo
    {
        int l,c;
    };
    romeo coada[10002];
int R[103][103];
int J[103][103];
int main()
{
    int n,m,poz1,inc=1,sf=1,lin,col,mini=102,x1,y1,lr,cr,lj,cj;
    cin>>n>>m;
    int dirL[8]={-1,-1,0,1,1,1,0,-1},dirC[8]={0,1,1,1,0,-1,-1,-1};
    int i,j;
    char lit;
    cin.get();
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=m; j++)
        {
            cin.get(lit);
            if(lit=='X')
            {
                R[i][j]=-1;
                J[i][j]=-1;
            }
            else if(lit=='R')
            {
                lr=i;
                cr=j;
                R[i][j]=1;
            }
            else if(lit=='J')
            {
                lj=i;
                cj=j;
                J[i][j]=1;
            }
            else
            {
                R[i][j]=0;
                J[i][j]=0;
            }
            if(j==8)
                cin.get();
        }
    }
    for(j=0; j<=m+1; j++)
    {
        R[0][j]=-1;
    }
    for(j=0; j<=m+1; j++)
    {
        R[n+1][j]=-1;
    }
    for(i=0; i<=n+1; i++)
    {
        R[i][0]=-1;
    }
    for(i=0; i<=n+1; i++)
    {
        R[i][m+1]=-1;
    }
    for(j=0; j<=m+1; j++)
    {
        J[0][j]=-1;
    }
    for(j=0; j<=m+1; j++)
    {
        J[n+1][j]=-1;
    }
    for(i=0; i<=n+1; i++)
    {
        J[i][0]=-1;
    }
    for(i=0; i<=n+1; i++)
    {
        J[i][m+1]=-1;
    }
    sf=inc=1;
    coada[inc].l=lr;
    coada[inc].c=cr;
    R[lr][cr]=1;
    while(inc<=sf)
    {
        for(i=0; i<8; i++)
        {
            lin=coada[inc].l+dirL[i];
            col=coada[inc].c+dirC[i];
            if(R[lin][col]==0)
            {
                sf++;
                coada[sf].l=lin;
                coada[sf].c=col;
                R[lin][col]=R[coada[inc].l][coada[inc].c]+1;
            }
        }
        inc++;
    }
    inc=sf=1;
    coada[inc].l=lj;
    coada[inc].c=cj;
    J[lj][cj]=1;
    while(inc<=sf)
    {
        for(i=0; i<8; i++)
        {
            lin=coada[inc].l+dirL[i];
            col=coada[inc].c+dirC[i];
            if(J[lin][col]==0)
            {
                sf++;
                coada[sf].l=lin;
                coada[sf].c=col;
                J[lin][col]=J[coada[inc].l][coada[inc].c]+1;
            }
        }
        inc++;
    }
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=m; j++)
        {
            if(R[i][j]==J[i][j] && R[i][j]!=-1 && R[i][j]!=0)
            {
                if(R[i][j]<mini)
                {
                    mini=R[i][j];
                    x1=i;
                    y1=j;
                }

            }
        }
    }
    cout<<mini<<" "<<x1<<" "<<y1;
    return 0;
}