Pagini recente » Monitorul de evaluare | Cod sursa (job #2216401) | tema | tema | Cod sursa (job #1854792)
#include <fstream>
using namespace std;
ifstream fin ("rj.in");
ofstream fout("rj.out");
int a[104][104],n,m,d,linv,colv,rez,x,p,u,i,j,lin,col,linJ,colJ,nr,nr1;
char b[104];
struct elem {
int lin;
int col;
int provenienta;
};
elem c[10004];
int di[] = {-1,0,0,1};
int dj[] = {0,-1,1,0};
int main () {
fin>>n>>m;
for (i=1;i<=n;i++){
fin.get();
fin.get(b,100);
for (int j=0;j<=m-1;j++){
if (b[j]==' '){
a[i][j+1]=0;
}
if (b[j]=='X'){
a[i][j+1]=-1;
}
if (b[j]=='R'){
a[i][j+1]=0;
c[1].lin=i;
c[1].col=j+1;
}
if (b[j]=='J'){
a[i][j+1]=0;
linJ=i;
colJ=j+1;
}
}
}
p = 1;
u = 1;
while (p<=u) {
x=a[c[p].lin][c[p].col];
for (d = 0; d<=3; d++) {
linv = c[p].lin + di[d];
colv = c[p].col + dj[d];
if (a[linv][colv]==0&&linv<=n&&linv>=1&&colv>=1&&colv<=m){
u++;
c[u].lin=linv;
c[u].col=colv;
c[u].provenienta=p;
a[linv][colv]=x+1;
if (linv==linJ&&colv==colJ){
p=u+1;
break;
}
}
}
p++;
}
nr=a[c[u].lin][c[u].col];
if (nr%2==0)
fout<<nr/2<<" ";
else
fout<<nr/2+1;
if (nr%2==0)
nr=nr/2;
else
nr=nr/2+1;
while (nr!=0){
u=c[u].provenienta;
nr--;
}
fout<<c[u].lin<<" "<<c[u].col;
return 0;
}