Cod sursa(job #2139385)

Utilizator NinjaCubeMihai Radovici NinjaCube Data 22 februarie 2018 14:55:00
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.05 kb
#include <bits/stdc++.h>
using namespace std;
char c[105][105],str[110];
int i,m,n,a,j,sri,sji,srj,sjj,rh[105][105],jh[105][105];
ifstream fin ("rj.in");
ofstream fout ("rj.out");
void citire(){
for (i=1;i<=n;i++){
        fin.getline(str,m+1);
for (j=1;j<=m;j++)
{
    c[i][j]=str[j-1];
    if (c[i][j]=='R'){
        sri=i;
        srj=j;
    }
    if (c[i][j]=='J'){
        sji=i;
        sjj=j;
    }

}}
 }
void leer(int li, int lj, int b){

    rh[li][lj]=b;
    if(c[li-1][lj]==' '&&rh[li-1][lj]==0)
        leer(li-1,lj,b+1);
    if(c[li][lj-1]==' '&&rh[li][lj-1]==0)
        leer(li,lj-1,b+1);
    if(c[li-1][lj-1]==' '&&rh[li-1][lj-1]==0)
        leer(li-1,lj-1,b+1);
    if(c[li-1][lj+1]==' '&&rh[li-1][lj+1]==0)
        leer(li-1,lj+1,b+1);
    if(c[li+1][lj]==' '&&rh[li+1][lj]==0)
        leer(li+1,lj,b+1);
    if(c[li][lj+1]==' '&&rh[li][lj+1]==0)
        leer(li,lj+1,b+1);
    if(c[li+1][lj+1]==' '&&rh[li+1][lj+1]==0)
        leer(li+1,lj+1,b+1);
    if(c[li+1][lj-1]==' '&&rh[li+1][lj-1]==0)
        leer(li+1,lj-1,b+1);

}
void leej(int li, int lj, int b){
    jh[li][lj]=b;
    if(c[li-1][lj]==' '&&jh[li-1][lj]==0)
        leej(li-1,lj,b+1);
    if(c[li][lj-1]==' '&&jh[li][lj-1]==0)
        leej(li,lj-1,b+1);
    if(c[li-1][lj-1]==' '&&jh[li-1][lj-1]==0)
        leej(li-1,lj-1,b+1);
    if(c[li-1][lj+1]==' '&&jh[li-1][lj+1]==0)
        leej(li-1,lj+1,b+1);
    if(c[li+1][lj]==' '&&jh[li+1][lj]==0)
        leej(li+1,lj,b+1);
    if(c[li][lj+1]==' '&&jh[li][lj+1]==0)
        leej(li,lj+1,b+1);
    if(c[li+1][lj+1]==' '&&jh[li+1][lj+1]==0)
        leej(li+1,lj+1,b+1);
    if(c[li+1][lj-1]==' '&&jh[li+1][lj-1]==0)
        leej(li+1,lj-1,b+1);

}
int main()
{
    fin>>n>>m;
    fin.getline(str,m+1);
    citire();
    leer(sri,srj,0);
    leej(sji,sjj,0);
    int mni,mnj,mn=10005;
    for (i=1;i<=n;i++)
    for(j=1;j<=m;j++){
    if (rh[i][j]==jh[i][j]&&rh[i][j]>0&&rh[i][j]<mn){
        mn=rh[i][j];
        mni=i;
        mnj=j;}
    }
    fout<<mn<<" "<<mni<<" "<<mnj;
    return 0;
}