Cod sursa(job #868876)
#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int hr[101][101],hj[101][101],h[101][101],i,j,prx,pry,pjx,pjy,lq=1,k=1,n,m;
char c[201];
bool stop;
typedef struct coada{int x,y;};
coada q[100000001];
inline void sus()
{
if(h[i-1][j]==0 && i!=1)
{
q[lq].x=i-1;
q[lq].y=j;
lq++;
h[i-1][j]=k+1;
}
}
inline void jos()
{
if(h[i+1][j]==0 && i!=n)
{
q[lq].x=i+1;
q[lq].y=j;
lq++;
h[i+1][j]=k+1;
}
}
inline void stanga()
{
if(h[i][j-1]==0 && j!=1)
{
q[lq].x=i;
q[lq].y=j-1;
lq++;
h[i][j-1]=k+1;
}
}
inline void dreapta()
{
if(h[i][j+1]==0 && j!=m)
{
q[lq].x=i;
q[lq].y=j+1;
lq++;
h[i][j+1]=k+1;
}
}
inline void jos_dreapta()
{
if(h[i+1][j+1]==0 && i!=n && j!=m)
{
q[lq].x=i+1;
q[lq].y=j+1;
lq++;
h[i+1][j+1]=k+1;
}
}
inline void jos_stanga()
{
if(h[i+1][j-1]==0 && i!=n && j!=1)
{
q[lq].x=i+1;
q[lq].y=j-1;
lq++;
h[i+1][j-1]=k+1;
}
}
inline void sus_dreapta()
{
if(h[i-1][j+1]==0 && i!=1 && j!=m)
{
q[lq].x=i-1;
q[lq].y=j+1;
lq++;
h[i-1][j+1]=k+1;
}
}
inline void sus_stanga()
{
if(h[i-1][j-1]==0 && i!=1 && j!=1)
{
q[lq].x=i-1;
q[lq].y=j-1;
lq++;
h[i-1][j-1]=k+1;
}
}
inline void solve()
{
for(int l=0;!stop;l++)
{
i=q[l].x;
j=q[l].y;
if(i==0 && j==0) stop=1;
else
{
sus();
jos();
dreapta();
stanga();
sus_stanga();
sus_dreapta();
jos_stanga();
jos_dreapta();
if(!(h[q[l].x][q[l].y]==h[q[l+1].x][q[l+1].y]
||h[q[l].x][q[l].y]==h[q[l+2].x][q[l+2].y]
||h[q[l].x][q[l].y]==h[q[l+3].x][q[l+3].y]
||h[q[l].x][q[l].y]==h[q[l+4].x][q[l+4].y]
||h[q[l].x][q[l].y]==h[q[l+5].x][q[l+5].y]
||h[q[l].x][q[l].y]==h[q[l+6].x][q[l+6].y]
||h[q[l].x][q[l].y]==h[q[l+7].x][q[l+7].y]
||h[q[l].x][q[l].y]==h[q[l+8].x][q[l+8].y])) k++;
}
}
}
int main()
{
f>>n>>m;
f.getline(c,200);
for(i=1;i<=n;i++)
{
f.getline(c,200);
for(j=1;j<=m;j++)
{
if(c[j-1]==' ') hj[i][j]=h[i][j]=hr[i][j]=0;
if(c[j-1]=='X') hj[i][j]=h[i][j]=hr[i][j]=-1;
if(c[j-1]=='R') {prx=i; pry=j;hj[i][j]=h[i][j]=hr[i][j]=-1;}
if(c[j-1]=='J') {pjx=i; pjy=j;hj[i][j]=h[i][j]=hr[i][j]=-1;}
}
}
q[0].x=prx;
q[0].y=pry;
solve();
/* for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++) if(h[i][j]>=0 && h[i][j]<=9) g<<' '<<h[i][j]<<' '; else g<<h[i][j]<<' ';
g<<'\n';
}*/
for(i=1;i<=n;i++)
for(j=1;j<=m;j++) hr[i][j]=h[i][j];
for(i=1;i<=n;i++)
for(j=1;j<=m;j++) h[i][j]=hj[i][j];
for(i=0;i<=lq;i++) q[i].x=q[i].y=0;
lq=1;
q[0].x=pjx;
q[0].y=pjy;
k=1;
stop=0;
solve();
/*g<<'\n';
g<<'\n';
g<<'\n';
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++) if(h[i][j]>=0 && h[i][j]<=9) g<<' '<<h[i][j]<<' '; else g<<h[i][j]<<' ';
g<<'\n';
}*/
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)if(hr[i][j]==h[i][j] && h[i][j]!=-1 && h[i][j]){ g<<hr[i][j]<<' '<<i<<' '<<j<<'\n'; i=n;break;}
return 0;
}