Cod sursa(job #3231724)

Utilizator Bolfa_DBolfa Diana Bolfa_D Data 27 mai 2024 17:06:01
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.75 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
struct poz{int l,c;};

int Min=2e9, lee[11][11][3], n, m, dx[]={-1,0,1,0,-1,1,1,-1}, dy[]={0,-1,0,1,-1,1,-1,1};
void leee(poz a, int ok)
{
    deque<poz> q;
    q.clear();
    poz x, y;

    q.push_back(a);
    lee[a.l][a.c][ok]=1;
    while(q.empty()==false)
    {
        x=q.front();
        q.pop_front();
        for(int k=0;k<8;++k)
        {
            y.l=x.l+dx[k];
            y.c=x.c+dy[k];
            if(lee[y.l][y.c][ok]>lee[x.l][x.c][ok]+1)
            {
                lee[y.l][y.c][ok]=lee[x.l][x.c][ok]+1;
                q.push_back(y);
            }
        }
    }
}


poz a, b,ans;
char s[110];
int main()
{
    fin>>n>>m;

    fin.getline(s,105);

    for(int i=1;i<=n;++i)
    {
        fin.getline(s,105);
        for(int j=0;j<m;++j)
        {
            if(s[j]=='R')
                a={i,j+1};
            else if(s[j]=='J')
                b={i,j+1};
            else if(s[j]=='X')
                lee[i][j+1][0]=lee[i][j+1][1]=-1;

            if(s[j]!='X')
                lee[i][j+1][0]=lee[i][j+1][1]=2e9;
        }
    }

    for(int i=0;i<=n+1;++i)
        for(int j=0;j<=1;++j)
            lee[i][0][j]=lee[i][m+1][j]=-1;
    for(int j=0;j<=m+1;++j)
        for(int i=0;i<=1;++i)
            lee[0][j][i]=lee[n+1][j][i]=-1;
    leee(a,0);
    leee(b,1);

    for(int i=1;i<=n;++i)
        for(int j=1;j<=m;++j)
            if(lee[i][j][0]!=-1 && lee[i][j][0]==lee[i][j][1])
                if(lee[i][j][0]<Min)
                {
                    Min=lee[i][j][0];
                    ans={i,j};
                }

    fout<<Min<<" "<<ans.l<<" "<<ans.c;

    return 0;
}