Cod sursa(job #2999572)

Utilizator carlanituNitu Carla carlanitu Data 11 martie 2023 10:36:18
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.68 kb
#include <fstream>

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

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

char x[105];

struct ura{
    int l,c;
}coada[10001];

int a[102][102], b[102][102];
int main()
{
    int n,m,i,j,inc,sf,lin,col,ok,l1,c1;
    ///c este caracter si de aia trebuie sa punem char c!!!
    char c;
    cin>>n>>m;
    for(i=1;i<=n;i++)
    {
        ///citesc un enter
        cin.get(c);
        ///citesc toata linia
        cin.get(x+1,105);
        for(j=1;j<=m;j++)
        {
            ///acum incep sa formez matricea si sa pun primul element din fiecare coada
            ///primul elem din coada1 este pozitia pe care se afla R
            ///primul elem din coada2 este pozitia pe care se afla J
            if(x[j]=='X')
                a[i][j]=b[i][j]=-1;
            if(x[j]=='R')
            {
                a[i][j]=1;
                coada[1].l=i;
                coada[1].c=j;
                b[i][j]=-1;
            }
            if(x[j]=='J')
            {
                b[i][j]=1;
                l1=i;
                c1=j;
                a[i][j]=-1;
            }
        }
    }
    for(i=0;i<=n+1;i++){
        a[i][0]=-1;
        a[i][m+1]=-1;
        b[i][0]=-1;
        b[i][m+1]=-1;
    }
    for(j=0;j<=m+1;j++)
    {
        a[0][j]=-1;
        a[n+1][j]=-1;
        b[0][j]=-1;
        b[n+1][j]=-1;
    }
    inc=sf=1;
   // for(i=1;i<=n;i++)
    //{
    //    for(j=1;j<=m;j++)
     //       cout<<a[i][j]<<" ";
     //   cout<<"\n";
    //}
    while(inc<=sf)
    {
        for(i=0;i<=7;i++)
        {
            lin=coada[inc].l+dirL[i];
            col=coada[inc].c+dirC[i];
            if(a[lin][col]==0)
            {
                a[lin][col]=a[coada[inc].l][coada[inc].c]+1;
                sf++;
                coada[sf].l=lin;
                coada[sf].c=col;
            }
        }
        inc++;
    }
    inc=sf=1;
    coada[inc].l=l1;
    coada[inc].c=c1;
    while(inc<=sf)
    {
        for(i=0;i<=7;i++)
        {
            lin=coada[inc].l+dirL[i];
            col=coada[inc].c+dirC[i];
            if(b[lin][col]==0)
            {
                b[lin][col]=b[coada[inc].l][coada[inc].c]+1;
                sf++;
                coada[sf].l=lin;
                coada[sf].c=col;
            }
        }
        inc++;
    }
    ok=1;
    for(i=1;i<=n && ok==1;i++)
        for(j=1;j<=m && ok==1;j++)
        {
            if(a[i][j]==b[i][j] && a[i][j]!=-1 && a[i][j]!=0)
            {
                cout<<a[i][j]<<" "<<i<<" "<<j;
                ok=0;
            }
        }
    return 0;
}