Cod sursa(job #2503927)

Utilizator AlexNic_Nicula Dan Alexandru AlexNic_ Data 3 decembrie 2019 22:29:57
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.98 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream in("rj.in");
ofstream out("rj.out");
int dirl[8]={-1,-1,0,-1,1,1,0,1}, dirc[8]={0,-1,1,1,0,1,-1,-1};
struct ura
{
    int l;
    int c;
};
ura coada[10001];
int r[102][102], ju[102][102];
void prelucrare(int lp, int cp, int a[102][102])
{
    int sf=1, inc=1, lin, col;
    a[lp][cp]=1;
    coada[1].l=lp;
    coada[1].c=cp;
    while(inc<=sf){
        for(int i=0;i<8;i++){
            lin=coada[inc].l+dirl[i];
            col=coada[inc].c+dirc[i];
            if(a[lin][col]==0){
                sf++;
                coada[sf].l=lin;
                coada[sf].c=col;
                a[lin][col]=a[coada[inc].l][coada[inc].c]+1;
            }
        }
        inc++;
    }
}
int main()
{
    char ch, str[101];
    int lp1,lp2,cp1,cp2;
    int n,m, minn, linie, coloana;
    in>>n>>m;
    for(int i=0;i<=n+1;i++){
        r[i][0]=-1;
        r[i][m+1]=-1;
        ju[i][0]=-1;
        ju[i][m+1]=-1;
    }
    for(int i=0;i<=m+1;i++){
        r[0][i]=-1;
        r[n+1][i]=-1;
        ju[0][i]=-1;
        ju[n+1][i]=-1;
    }
    in.get(ch);
    for(int i=1;i<=n;i++){
        in.getline(str+1,m+1);
        for(int j=1;j<=m;j++){
            if(str[j]=='X')
                r[i][j]=-1;
            if(str[j]==' ')
                r[i][j]=0;
            if(str[j]=='R'){
                lp1=i;
                cp1=j;
                r[i][j]=0;
            }
            if(str[j]=='J'){
                lp2=i;
                cp2=j;
                r[i][j]=0;
            }
            ju[i][j]=r[i][j];
        }
    }
    prelucrare(lp1, cp1, r);
    prelucrare(lp2, cp2, ju);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(r[i][j]==ju[i][j] && r[i][j]<minn && r[i][j]!=0 && r[i][j]!=-1){
                linie=i;
                coloana=j;
                minn=r[i][j];
            }
    out<<minn<<" "<<linie<<" "<<coloana;
    return 0;
}