Pagini recente » Cod sursa (job #1999776) | Cod sursa (job #2946642) | Cod sursa (job #2324712) | Cod sursa (job #2299633) | Cod sursa (job #2297898)
#include <iostream>
#include <fstream>
using namespace std;
const int N=105;
const int dl[]={-1,-1,0,1,1,1,0,-1};
const int dc[]={0,1,1,1,0,-1,-1,-1};
int n,m,mr[N][N],mj[N][N];
char a[N][N];
struct poz
{
int l,c;
};
poz q[N*N],pozstartr,pozstartj,pozstop,x,y;
int main()
{
ifstream in("rj.in");
ofstream out("rj.out");
in>>n>>m;
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
{
in>>a[i][j];
if (a[i][j]=='R')
{
pozstartr.l=i;
pozstartr.c=j;
}
if (a[i][j]=='J')
{
pozstartj.l=i;
pozstartj.c=j;
}
}
}
int st=0,dr=-1;
q[++dr]=pozstartr;
while (st<=dr)
{
x=q[st++];
for (int i=0;i<8;i++)
{
y.l=x.l+dl[i];
y.c=x.c+dc[i];
if (mr[y.l][y.c]==0 && a[y.l][y.c]==' ')
{
q[++dr]=y;
mr[y.l][y.c]=1+mr[x.l][x.c];
}
}
}
for (int i=st;i<=dr;i++)
q[i].l=q[i].c=0;
st=0;
dr=-1;
q[++dr]=pozstartj;
while (st<=dr)
{
x=q[st++];
for (int i=0;i<8;i++)
{
y.l=x.l+dl[i];
y.c=x.c+dc[i];
if (mj[y.l][y.c]==0 && a[y.l][y.c]==' ')
{
q[++dr]=y;
mj[y.l][y.c]=1+mj[x.l][x.c];
}
}
}
int minim=101,ik,jk;
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
{
if (mr[i][j]==mj[i][j])
{
if (minim<mr[i][j])
{
ik=i;
jk=j;
minim=mr[i][j];
}
}
}
}
out<<ik<<" "<<jk<<" "<<minim;
in.close();
out.close();
return 0;
}