Pagini recente » Cod sursa (job #800663) | Cod sursa (job #2663964) | Cod sursa (job #1125125) | Cod sursa (job #1267292) | Cod sursa (job #922083)
Cod sursa(job #922083)
#include<stdio.h>
char c[110];
int N,M,a[110][110],b[110][110],qjl[10100],qjc[10100],qrl[10100],qrc[10100],jl,jc,rl,rc,ok=0,ret1,ret2,ret3;
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%d%d\n",&N,&M);
for(int i=1;i<=N;++i)
{
gets(c);
for(int j=0;j<=M-1;++j)
{
if(c[j]=='X')
{
a[i][j+1]=-1;
b[i][j+1]=-1;
}
if(c[j]=='J')
{
jl=i;
jc=j+1;
}
if(c[j]=='R')
{
rl=i;
rc=j+1;
}
}
}
int first=0;
int last=0;
a[jl][jc]=1;
qjl[0]=jl;
qjc[0]=jc;
while(a[rl][rc]==0)
{
if(qjc[first]<N)
if(a[qjl[first]][qjc[first]+1]==0)
{
a[qjl[first]][qjc[first]+1]=a[qjl[first]][qjc[first]]+1;
++last;
qjl[last]=qjl[first];
qjc[last]=qjc[first]+1;
}
if(qjc[first]>1)
if(a[qjl[first]][qjc[first]-1]==0)
{
a[qjl[first]][qjc[first]-1]=a[qjl[first]][qjc[first]]+1;
++last;
qjl[last]=qjl[first];
qjc[last]=qjc[first]-1;
}
if(qjl[first]<N)
if(a[qjl[first]+1][qjc[first]]==0)
{
a[qjl[first]+1][qjc[first]]=a[qjl[first]][qjc[first]]+1;
++last;
qjl[last]=qjl[first]+1;
qjc[last]=qjc[first];
}
if(qjl[first]>1)
if(a[qjl[first]-1][qjc[first]]==0)
{
a[qjl[first]-1][qjc[first]]=a[qjl[first]][qjc[first]]+1;
++last;
qjl[last]=qjl[first]-1;
qjc[last]=qjc[first];
}
++first;
}
first=0;
last=0;
b[rl][rc]=1;
qrl[0]=rl;
qrc[0]=rc;
while(b[jl][jc]==0)
{
if(qrc[first]<N)
if(b[qrl[first]][qrc[first]+1]==0)
{
b[qrl[first]][qrc[first]+1]=b[qrl[first]][qrc[first]]+1;
if(b[qrl[first]][qrc[first]+1]==a[qrl[first]][qrc[first]+1])
{
ret1=b[qrl[first]][qrc[first]+1];
ret2=qrl[first];
ret3=qrc[first]+1;
break;
}
++last;
qrl[last]=qrl[first];
qrc[last]=qrc[first]+1;
}
if(qrc[first]>1)
if(b[qrl[first]][qrc[first]-1]==0)
{
b[qrl[first]][qrc[first]-1]=b[qrl[first]][qrc[first]]+1;
if(b[qrl[first]][qrc[first]-1]==a[qrl[first]][qrc[first]-1])
{
ret1=b[qrl[first]][qrc[first]-1]-1;
ret2=qrl[first];
ret3=qrc[first]-1;
break;
}
++last;
qrl[last]=qrl[first];
qrc[last]=qrc[first]-1;
}
if(qrl[first]<N)
if(b[qrl[first]+1][qrc[first]]==0)
{
b[qrl[first]+1][qrc[first]]=b[qrl[first]][qrc[first]]+1;
if(b[qrl[first]+1][qrc[first]]==a[qrl[first]+1][qrc[first]])
{
ret1=b[qrl[first]+1][qrc[first]]-1;
ret2=qrl[first]+1;
ret3=qrc[first];
break;
}
++last;
qrl[last]=qrl[first]+1;
qrc[last]=qrc[first];
}
if(qrl[first]>1)
if(b[qrl[first]-1][qrc[first]]==0)
{
b[qrl[first]-1][qrc[first]]=b[qrl[first]][qrc[first]]+1;
if(b[qrl[first]-1][qrc[first]]==a[qrl[first]-1][qrc[first]])
{
ret1=b[qrl[first]-1][qrc[first]]-1;
ret2=qrl[first]-1;
ret3=qrc[first];
break;
}
++last;
qrl[last]=qrl[first]-1;
qrc[last]=qrc[first];
}
++first;
}
printf("%d %d %d",ret1,ret2,ret3);
return 0;
}