Cod sursa(job #2720625)

Utilizator elena284Rotaru Elena Alexia elena284 Data 11 martie 2021 08:30:07
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.06 kb
#include <fstream>

using namespace std;

ifstream cin("rj.in");
ofstream cout("rj.out");

int dirL[]={-1,-1,0,1,1,1,0,-1};
int dirC[]={0,1,1,1,0,-1,-1,-1};

struct coordonate
{
    int l,c;

};

int interior(int x,int y,int n,int m)
{
    return x>=1 && x<=n && y>=1 && y<=m;
}

void lee(int x, int y, int s[102][102], int n, int m )
{
    coordonate coada[10001];
    int sf,inc,lin,col,i;
    sf=inc=1;
    coada[inc].l=x;
    coada[inc].c=y;
    while(inc<=sf)
    {

        for(i=0; i<=7; i++)
        {
            lin=coada[inc].l+dirL[i];
            col=coada[inc].c+dirC[i];
            if( interior(lin,col,n,m) && s[lin][col]==0)
            {
                sf++;
                coada[sf].l=lin;
                coada[sf].c=col;
                s[lin][col]=s[coada[inc].l][coada[inc].c]+1;
            }
        }
        inc++;
    }
    s[x][y]=0;
}

int main()
{
    char s[102];
    int a[102][102],b[102][102],n,m,i,j,l1,c1,l2,c2,minim=101*101,xm,ym;
    cin>>n>>m;
    cin.getline(s,102);
    for(i=1; i<=n; i++)
    {
        cin.getline(s,102);
        for(j=1; j<=m; j++)
        {
            if(s[j-1]=='R')
            {
                a[i][j]=0;
                b[i][j]=0;
                l1=i;
                c1=j;
            }
            else if(s[j-1]=='J')
            {
                a[i][j]=0;
                b[i][j]=0;
                l2=i;
                c2=j;
            }
            else if(s[j-1]=='X')
            {
                a[i][j]=-1;
                b[i][j]=-1;
            }

            else
            {
                a[i][j]=0;
                b[i][j]=0;
            }

        }

    }
    lee(l1,c1,a,n,m);
    lee(l2,c2,b,n,m);
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=m; j++)
        {
            if(a[i][j]==b[i][j] && a[i][j]>0 && a[i][j]<minim)
            {
                minim=a[i][j];
                xm=i;
                ym=j;
            }
        }

    }

     cout<<minim+1<<' '<<xm<<' '<<ym;

    return 0;
}