Pagini recente » Cod sursa (job #3168085) | Cod sursa (job #275854) | Cod sursa (job #558532) | Cod sursa (job #1461214) | Cod sursa (job #1418976)
#include<fstream>
#include<cmath>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int i,j,n,m,rx,ry,jx,jy,q[102][102],o,p,w[102][102],r,dif=2,x,y,k;
char a[100];
void afisare(int e[102][102]){
for(i=1;i<=n;i++){
for(j=1;j<=m;j++)
g<<e[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;
w[i][j+1]=1;
}
else{
q[i][j+1]=r;
w[i][j+1]=r;
if(a[j]=='R'){
rx=i;
ry=j+1;
}
if(a[j]=='J'){
jx=i;
jy=j+1;
}
}
f.get();
}
}
void lee(int e[102][102],int x,int y,int k){
if(x>1 && e[x-1][y]>k+1){
e[x-1][y]=k+1;
lee(e,x-1,y,k+1);
}
if(x<n && e[x+1][y]>k+1){
e[x+1][y]=k+1;
lee(e,x+1,y,k+1);
}
if(y>1 && e[x][y-1]>k+1){
e[x][y-1]=k+1;
lee(e,x,y-1,k+1);
}
if(y<m && e[x][y+1]>k+1){
e[x][y+1]=k+1;
lee(e,x,y+1,k+1);
}
}
void cautare(){
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(abs(q[i][j]-w[i][j])<=dif && q[i][j]!=1 && q[i][j]!=r){
if(q[i][j]-w[i][j]==dif){
if(i<x){
x=i;
y=j;
k=q[i][j]-2;
dif=abs(q[i][j]-w[i][j]);
}
if(i==x)
if(j<=y){
x=i;
y=j;
k=q[i][j]-2;
dif=abs(q[i][j]-w[i][j]);
}
}
else{
x=i;
y=j;
k=q[i][j]-2;
dif=abs(q[i][j]-w[i][j]);
}
}
g<<x<<" "<<y<<" "<<k;
}
int main(){
f>>n>>m;
r=n*m;
citire();
q[rx][ry]=2;
lee(q,rx,ry,2);
w[jx][jy]=2;
lee(w,jx,jy,2);
cautare();
f.close();
g.close();
return 0;
}