Cod sursa(job #2906932)

Utilizator Andrei_BadoiuBadoiu Andrei Andrei_Badoiu Data 27 mai 2022 21:39:30
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.78 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");

int v[102][102],o[102][102];
int n,m,minn;

void path1(int i, int j,int cnt){
    if(v[i][j]==-2){
        v[i][j]=cnt;
        if(i>1) path1(i-1 , j , cnt+1);
        if(i<n) path1(i+1 , j , cnt+1);
        if(j>1) path1(i , j-1 , cnt+1);
        if(j<m) path1(i , j+1 , cnt+1);
    }
}
void path2(int i, int j,int cnt){
    if(o[i][j]==-2){
        o[i][j]=cnt;
        if(i>1) path2(i-1 , j , cnt+1);
        if(i<n) path2(i+1 , j , cnt+1);
        if(j>1) path2(i , j-1 , cnt+1);
        if(j<m) path2(i , j+1 , cnt+1);
    }
}

char c[102];

int main()
{

    struct {
        int i;
        int j;
    }ju,ro,fin;
    in>>n>>m;
    in.getline(c,102);
    for(int i=1;i<=n;i++){
        in.getline(c,102);
        for(int j=0;j<m;j++){
            if(c[j]=='R') {
                ro.i=i;
                ro.j=j+1;
                v[ro.i][ro.j]=-2;
                o[ro.i][ro.j]=-1;
                }
            else if(c[j]=='J') {
                ju.i=i;
                ju.j=j+1;
                v[ju.i][ju.j]=-1;
                o[ju.i][ju.j]=-2;
            }
            else if(c[j]=='X'){
                v[i][j+1]=-1;
                o[i][j+1]=-1;
            }
            else if(c[j]==' '){
                v[i][j+1]=-2;
                o[i][j+1]=-2;
            }
        }
    }
    path1(ro.i , ro.j , 0);
    path2(ju.i , ju.j , 0);

    minn=10000;

    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(v[i][j]==o[i][j] && v[i][j]>=1){
                if(v[i][j]<minn) {
                    minn=v[i][j];
                    fin.i=i;
                    fin.j=j;
                }
            }
        }
    }

    out<<minn<<' ';
    out<<fin.i<<' ';
    out<<fin.j<<' ';
    return 0;
}