Pagini recente » Cod sursa (job #2357334) | Cod sursa (job #668258) | Cod sursa (job #1984324) | Cod sursa (job #3164909) | Cod sursa (job #1911249)
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
pair <int, int> x[10002];
int vj[102][102], vr[102][102];
int i, j, iv, jv,n, m, d, ur, uj, p, mini, mi,mj,st,dr;
char a[102];
int di[]={ 0, 0, -1, +1, -1, +1, -1, +1};
int dj[]={-1, +1, 0, 0, -1, +1, +1, -1};
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)
{
fin.get();
fin.get(a, 102);
for(j=0;j<m;j++)
{
if(a[j]=='X')
{
vr[i][j+1]=-1;
vj[i][j+1]=-1;
}
else
if(a[j]=='J')
{
vj[i][j+1]=1;
uj++;
st=i;
dr=j+1;
}
else
if(a[j]=='R')
{
vr[i][j+1]=1;
ur++;
x[ur].first=i;
x[ur].second=j+1;
}
else
{
vr[i][j+1]=0;
vj[i][j+1]=0;
}
}
}
p=1;
while(p<=ur)
{
for(d=0;d<=7;d++)
{
iv=x[p].first+di[d];
jv=x[p].second+dj[d];
if(iv>=1&&iv<=n&&jv>=1&&jv<=m&&vr[iv][jv]==0)
{
ur++;
x[ur].first=iv;
x[ur].second=jv;
vr[iv][jv]=vr[x[p].first][x[p].second]+1;
}
}
p++;
}
for(i=1;i<=10000;i++)
{
x[i].first=0;
x[i].second=0;
}
x[1].first=st;
x[1].second=dr;
p=1;mini=10002;mi=102;mj=102;
while(p<=uj)
{
for(d=0;d<=7;d++)
{
iv=x[p].first+di[d];
jv=x[p].second+dj[d];
if(iv>=1&&iv<=n&&jv>=1&&jv<=m&&vj[iv][jv]==0)
{
uj++;
x[uj].first=iv;
x[uj].second=jv;
vj[iv][jv]=vj[x[p].first][x[p].second]+1;
if(vj[iv][jv]==vr[iv][jv]&&vr[iv][jv]<=mini)
{
mini=vj[iv][jv];
if(mi>iv)
{
mi=iv;
mj=jv;
}
else
if(mi==iv)
{
if(mj>jv)
mj=jv;
}
}
}
}
p++;
}
fout<<mini<<" "<<mi<<" "<<mj;
fin.close();
fout.close();
return 0;
}