Cod sursa(job #3137246)

Utilizator Bolfa_DBolfa Diana Bolfa_D Data 11 iunie 2023 21:36:37
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.81 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
struct Poz{
    int l;
    int c;
};
int dy[]={0, 1,-1, 0,-1,1,-1,1};
int dx[]={1, 0, 0,-1,-1,1,1,-1};
void lee(Poz ben, int v[110][110])
{
    int i=0,j=0, ok=1;
    Poz q[100000];
    q[0]=ben;
    v[ben.l][ben.c]=1;
    Poz aux,w;
    while(i<=j)
    {
        w=q[i++];
        for(int k=0;k<8;++k)
        {
            aux.l=w.l+dx[k];
            aux.c=w.c+dy[k];
            if(v[aux.l][aux.c]==0)
            {
                ok=1;
                v[aux.l][aux.c]=v[w.l][w.c]+1;
                q[++j]=aux;
            }
        }
    }
}
int i,j, n,m, r[110][110], ju[110][110], Min=102000,mj,mi;
Poz o,u;
int main()
{
    fin>>n>>m;
    char c;
    fin.get(c);

    for(i=0;i<=n+1;++i)
    {
        ju[i][0]=-1;
        ju[i][m+1]=-1;
    }
    for(j=0;j<=m+1;++j)
        ju[0][j]=ju[n+1][j]=-1;

    for(i=1;i<=n;++i)
    {
        for(j=1;j<=m;++j)
        {
            fin.get(c);
            if(c=='X')
                ju[i][j]=-1;
            else
                ju[i][j]=0;
            if(c=='R')
            {
                o.l=i;
                o.c=j;
            }
            if(c=='J')
            {
                u.l=i;
                u.c=j;
            }
        }
        fin.get(c);
    }


    for(i=0;i<=n+1;++i)
        for(j=0;j<=m+1;++j)
            r[i][j]=ju[i][j];



    lee(o, r);
    lee(u,ju);

    for(i=1;i<=n;++i)
        for(j=1;j<=m;++j)
        {
            if(r[i][j]==ju[i][j])
                if(r[i][j]<Min && r[i][j]>0)
                {
                    Min=r[i][j];
                    mi=i;
                    mj=j;
                }
        }

    fout<<Min<<" "<<mi<<" "<<mj;
    return 0;
}