Cod sursa(job #2952633)

Utilizator Robert_NicuNicu Robert Cristian Robert_Nicu Data 9 decembrie 2022 17:11:56
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.51 kb
#include <bits/stdc++.h>
using namespace std;

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

int n, m, oras[101][101], tmin;
char s[101];
const int di[]={-1, -1, -1, 0, 1, 1, 1, 0}, dj[]={-1, 0, 1, 1, 1, 0, -1, -1};

void lee(int istart, int jstart){
    queue < pair<int, int> > q;
    q.push(make_pair(istart, jstart));
    while(!q.empty()){
        int i=q.front().first, j=q.front().second;
        for(int k=0; k<8; k++){
            int iv=i+di[k], jv=j+dj[k];
            if(iv>=1 && iv<=n && jv>=1 && jv<=m && oras[iv][jv]==0){
                oras[iv][jv]=oras[i][j]+1;
                q.push(make_pair(iv, jv));
            }
            if(oras[iv][jv]==1 && (iv!=istart && jv!=jstart)){
                oras[iv][jv]=oras[i][j]+1;
                tmin=oras[iv][jv]/2+1;
            }
        }
        q.pop();
    }
}

int main(){
    fin>>n>>m;
    fin.get();
    for(int i=1; i<=n; i++){
        fin.getline(s, sizeof(s));
        for(int j=0; j<m; j++){
            if(s[j]=='R')
                oras[i][j+1]=1;
            if(s[j]=='J')
                oras[i][j+1]=1;
            if(s[j]=='X')
                oras[i][j+1]=-1;
        }
    }
    for(int i=1; i<=n; i++){
        for(int j=1; j<=m; j++){
            if(oras[i][j]==1){
                lee(i, j);
            }
        }
    }
    for(int i=1; i<=n; i++){
        for(int j=1; j<=m; j++){
            if(oras[i][j]==tmin){
                fout<<tmin<<" "<<i<<" "<<j;
            }
        }
    }
}