Pagini recente » Cod sursa (job #871370) | Cod sursa (job #621089) | Cod sursa (job #2117076) | Cod sursa (job #3203028) | Cod sursa (job #922248)
Cod sursa(job #922248)
#include<fstream>
using namespace std;
string c;
int N,M,a[110][110],ql[12100],qc[12100],jl,jc,rl,rc,ok=0,ret1,ret2;
int dx[]={0,0,1,1,1,-1,-1,-1};
int dy[]={1,-1,1,0,-1,1,0,-1};
int main()
{
ifstream fin("rj.in");
ofstream fout("rj.out");
fin>>N>>M;
c=fin.get();
for(int i=1;i<=N;++i)
{
getline(fin,c);
for(int j=0;j<=M-1;++j)
{
if(c[j]=='X')
{
a[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;
ql[0]=jl;
qc[0]=jc;
while(a[rl][rc]==0)
{
for(int k=0;k<=7;++k)
if(ql[first]+dx[k]>=1 && ql[first]+dx[k]<=N && qc[first]+dy[k]>=1 && qc[first]+dy[k]<=N)
if(a[ql[first]+dx[k]][qc[first]+dy[k]]==0)
{
a[ql[first]+dx[k]][qc[first]+dy[k]]=a[ql[first]][qc[first]]+1;
++last;
ql[last]=ql[first]+dx[k];
qc[last]=qc[first]+dy[k];
}
++first;
}
int i;
int j;
for(j=1;j<=M;++j)
{
for(i=1;i<=N;++i)
{
if(a[i][j]==(a[rl][rc]+1)/2)
{
ret1=i;
ret2=j;
ok=1;
break;
}
}
if(ok==1)
break;
}
fout<<(a[rl][rc]+1)/2<<" "<<ret1<<" "<<ret2;
return 0;
}