Cod sursa(job #2477869)

Utilizator eugen5092eugen barbulescu eugen5092 Data 21 octombrie 2019 11:12:25
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.85 kb
#include <bits/stdc++.h>
using namespace std;
ifstream ci("rj.in");
ofstream cou("rj.out");
struct coord{
int x,y;
};
int n,m,leej[101][101],leer[101][101],v[101][101];
queue<coord>qr;
queue<coord>qj;

int coordx[9]={-1,0,1,0,-1,-1,+1,+1   };
int coordy[9]={0,1,0,-1,-1,+1,+1,-1   };
void citire(){
coord w;
ci>>n>>m;
string s;
int i,j;
getline(ci,s);
//cout<<s<<endl;
for(i=1;i<=n;i++){
    getline(ci,s);


    for(j=0;j<=m-1;j++){
    if(s[j]=='R' ){v[i][j+1]=1;w.x=i;w.y=j+1;qr.push(w); }
    if(s[j]=='J' ){v[i][j+1]=1;w.x=i;w.y=j+1;qj.push(w); }
    if(s[j]==' ' ){v[i][j+1]=0; }
    if(s[j]=='X' ){v[i][j+1]=2; }
    }
}



}
bool Ok(int i,int j){
if(i>=1&&i<=n&&j>=1&&j<=m){
    return 1;}
    return 0;

}

void Lee(int lee[101][101], queue<coord>q ){
int i,j;
coord w,w1;
while(!(q.empty())){

    w=q.front();
    q.pop();
    for(i=0;i<=7;i++){
        w1.x=w.x+coordx[i];
        w1.y=w.y+coordy[i];
        if(Ok(w1.x,w1.y) ){
            if(v[w1.x][w1.y]!=2&&v[w1.x][w1.y]!=1 ){
                if(lee[w1.x][w1.y]==0||(lee[w1.x][w1.y]>lee[w.x][w.y]+1 ) ){
                    lee[w1.x][w1.y]=lee[w.x][w.y]+1;
                    q.push(w1);
                }
            }
        }

    }


}



}


int main()
{
    int i,j,mn=200000,mni,mnj,cnt;
   citire();
   Lee(leer,qr);
   Lee(leej,qj);



   for(i=1;i<=n;i++){
    for(j=1;j<=m;j++){

        if(leej[i][j]==leer[i][j]&&leej[i][j]!=0&&leer[i][j]!=0 ){

           if(leer[i][j]<mn ){mn=leer[i][j];mni=i ;mnj=j;}
        }
    }

   }



    for(i=1;i<=n;i++){
    for(j=1;j<=m;j++){

           if(leej[i][j]==leer[i][j]&& leej[i][j]==mn ){ mni=i;mnj=j;i=n+1;j=m+1; }
        }
    }



for(j=1;j<=m;j++){
    if(leej[mni][j]==mn && leer[mni][j]==mn ){mnj=j;j=m+1; }
}



   cou<<mn+1<<" "<<mni<<" "<<mnj;

}