Pagini recente » Cod sursa (job #1697981) | Cod sursa (job #1921900) | Cod sursa (job #2875103) | Cod sursa (job #705693) | Cod sursa (job #1418764)
#include<fstream>
#include<cstring>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int i,j,n,m,rx,ry,jx,jy,q[100][100],x,y,tmin,o,p,w;
char a[100];
void afisare(){
for(i=1;i<=n;i++){
for(j=1;j<=m;j++)
g<<q[i][j]<<" ";
g<<'\n';
}
}
void citire(){
f.get();
for(i=1;i<=n;i++){
f.get(a,100);
for(j=0;j<m;j++)
if(a[j]=='X')
q[i][j+1]=1;
else{
q[i][j+1]=n*m;
if(a[j]=='R'){
rx=i;
ry=j+1;
}
if(a[j]=='J'){
jx=i;
jy=j+1;
}
}
f.get();
}
}
void lee(int x,int y,int k){
if(x>1 && q[x-1][y]>k+1){
q[x-1][y]=k+1;
lee(x-1,y,k+1);
}
if(x<n && q[x+1][y]>k+1){
q[x+1][y]=k+1;
lee(x+1,y,k+1);
}
if(y>1 && q[x][y-1]>k+1){
q[x][y-1]=k+1;
lee(x,y-1,k+1);
}
if(y<m && q[x][y+1]>k+1){
q[x][y+1]=k+1;
lee(x,y+1,k+1);
}
}
int cautare(int x, int y, int k){
if(x>1 && q[x-1][y]==k-1){
if(k-1==w){
o=x-1;p=y;
return 0;
}
else
cautare(x-1,y,k-1);
}
if(x<n && q[x+1][y]==k-1){
if(k-1==w){
o=x+1;p=y;
return 0;
}
else
cautare(x+1,y,k-1);
}
if(y>1 && q[x][y-1]==k-1){
if(k-1==w){
o=x;p=y-1;
return 0;
}
else
cautare(x,y-1,k-1);
}
if(y<m && q[x][y+1]==k-1){
if(k-1==w){
o=x;p=y+1;
return 0;
}
else
cautare(x,y+1,k-1);
}
return 0;
}
int main(){
f>>n>>m;
citire();
x=rx;
y=ry;
q[x][y]=2;
lee(x,y,2);
tmin=(q[jx][jy]-2)/2+1;
int k=q[jx][jy];
w=tmin+2;
cautare(jx,jy,k);
g<<o<<" "<<p<<" "<<tmin;
f.close();
g.close();
return 0;
}