Cod sursa(job #2952814)

Utilizator AlexTimplaruAlexandru Timplaru AlexTimplaru Data 9 decembrie 2022 23:48:12
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.93 kb
/// Aceasta sursa este pentru problema
/// https://infoarena.ro/problema/rj
/// Punctaj: 0
/// Grupa medie

#include <fstream>
#include <queue>

using namespace std;

int m, n, lr[110][110], lj[110][110], sr[2], sj[2], px, py, pmin = 200;
int v[][2] = { {0, 1}, {1, 1}, {1, 0}, {-1, 1}, {0, -1}, {-1, -1}, {-1, 0}, {1, -1} };
queue< pair<int, int> > q;

ifstream fin("rj.in");
ofstream fout("rj.out");

void lee(int a[110][110])
{
    while(!q.empty())
    {
        int x = q.front().first;
        int y = q.front().second;

        q.pop();
        for(int i = 0; i < 8; i++)
        {
            int xv = x + v[i][0];
            int yv = y + v[i][1];
            if(xv >= 1 && xv <= n && yv >= 1 && yv <= m && a[xv][yv] == 0)
            {
                a[xv][yv] = a[x][y] + 1;
                q.push(make_pair(xv, yv));
            }
        }
    }
}

int main()
{
    fin >> n >> m;
    fin.get();
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= m; j++)
        {
            char c = fin.get();
            if(c == 'X')
            {
                lr[i][j] = -1;
                lj[i][j] = -1;
            }
            else if(c == 'R')
            {
                sr[0] = i;
                sr[1] = j;
            }
            else if(c == 'J')
            {
                sj[0] = i;
                sj[1] = j;
            }
        }
        fin.get();
    }

    q.push(make_pair(sr[0], sr[1]));
    lr[sr[0]][sr[1]] = 1;
    lee(lr);

    q.push(make_pair(sj[0], sj[1]));
    lj[sj[0]][sj[1]] = 1;
    lee(lj);

    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= m; j++)
        {
            if(lr[i][j] > 0 && lr[i][j] == lj[i][j] && lr[i][j] < pmin)
            {
                pmin = lr[i][j];
                px = i;
                py = j;
            }
        }
    }
    fout << pmin << " " << px << " " << py << "\n";
}