Cod sursa(job #3306473)

Utilizator AlxPPatpaiac Alexandru AlxP Data 10 august 2025 19:00:44
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.88 kb
#include <bits/stdc++.h>
using namespace std;

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

int dx[] = {-1,-1,-1,0,0,1,1,1};
int dy[] = {-1,0,1,-1,1,-1,0,1};

struct element{
bool ok;
int romoe,julieta;
}a[101][101];

struct coordonate{
int lin,col;};

queue<coordonate> coada;

int main(){
int n,m,r1,r2,j1,j2,nrmin,linmin,colmin;
char ch;

in >> n >> m;
nrmin = n * m + 1;
for(int i = 1; i <= n; i++){
    in.get(ch);
    for(int j = 1; j <= m; j++){
        in.get(ch);
        if(ch == 'X') a[i][j].ok = 1;
        else if(ch == 'R'){
            r1 = i;
            r2 = j;}
        else if(ch == 'J'){
            j1 = i;
            j2 = j;}}}

coada.push({r1,r2});
a[r1][r2].romoe = 1;
while(!coada.empty()){
    int x = coada.front().lin;
    int y = coada.front().col;
    for(int i = 0; i <= 7; i++){
        int xv = x + dx[i];
        int yv = y + dy[i];
        if(xv >= 1 && xv <= n && yv >= 1 && yv <= m && a[xv][yv].ok == 0 && a[xv][yv].romoe == 0){
            a[xv][yv].romoe = a[x][y].romoe + 1;
            coada.push({xv,yv});}}
    coada.pop();}

coada.push({j1,j2});
a[j1][j2].julieta = 1;
while(!coada.empty()){
    int x = coada.front().lin;
    int y = coada.front().col;
    for(int i = 0; i <= 7; i++){
        int xv = x + dx[i];
        int yv = y + dy[i];
        if(xv >= 1 && xv <= n && yv >= 1 && yv <= m && a[xv][yv].ok == 0 && a[xv][yv].julieta == 0){
            a[xv][yv].julieta = a[x][y].julieta + 1;
            coada.push({xv,yv});}}
    coada.pop();}

for(int i = 1; i <= n; i++){
    for(int j = 1; j <= m; j++){
        if(a[i][j].ok == 0 && a[i][j].romoe == a[i][j].julieta && a[i][j].romoe > 0){
            if(a[i][j].romoe < nrmin){
                nrmin = a[i][j].romoe;
                linmin = i;
                colmin = j;}}}}

out << nrmin << " " << linmin << " " << colmin;

return 0;
}