Pagini recente » Cod sursa (job #2492613) | Cod sursa (job #553745) | Cod sursa (job #514957) | Cod sursa (job #1150836) | Cod sursa (job #2261551)
#include <bits/stdc++.h>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
const int NMAX=105;
int R[NMAX][NMAX], J[NMAX][NMAX], N, M, i, j;
int XR, YR, XJ, YJ;
int X, Y, XX, YY;
int p, u, t;
int ans=INT_MAX, linie, coloana;
int dx[8]= {-1, -1, 0, 1, 1, 1, 0, -1};
int dy[8]= {0, 1, 1, 1, 0, -1, -1, -1};
char S[NMAX], c;
struct punct
{
int X, Y;
};
punct Q[NMAX*NMAX];
int main()
{
f>>N>>M;
f.get(c);
for(i=1; i<=N; i++)
{
f.getline(S, 101);
for(j=0; j<M; j++)
if(S[j]=='R')
{
XR=i;
YR=j+1;
R[i][j+1]=1;
}
else if(S[j]=='J')
{
XJ=i;
YJ=j+1;
J[i][j+1]=1;
}
else if(S[j]=='X')
{
R[i][j+1]=J[i][j+1]=-1;
}
}
for(i=0; i<=M+1; i++)
R[0][i]=R[N+1][i]=J[0][i]=J[N+1][i]=-1;
for(i=1; i<=N; i++)
R[i][0]=R[i][M+1]=J[i][0]=J[i][M+1]=-1;
//g<<XR<<' '<<YR<<' '<<XJ<<' '<<YJ<<'\n';
//Lee Romeo:
p=u=1;
Q[1].X=XR;
Q[1].Y=YR;
while(p<=u)
{
X=Q[p].X;
Y=Q[p].Y;
for(t=0; t<8; t++)
{
XX=X+dx[t];
YY=Y+dy[t];
if(R[XX][YY]==0)
{
R[XX][YY]=R[X][Y]+1;
u++;
Q[u].X=XX;
Q[u].Y=YY;
}
}
p++;
}
//Lee Julieta:
p=u=1;
Q[1].X=XJ;
Q[1].Y=YJ;
while(p<=u)
{
X=Q[p].X;
Y=Q[p].Y;
for(t=0; t<8; t++)
{
XX=X+dx[t];
YY=Y+dy[t];
if(J[XX][YY]==0)
{
J[XX][YY]=J[X][Y]+1;
u++;
Q[u].X=XX;
Q[u].Y=YY;
}
}
p++;
}
for(i=1; i<=N; i++)
for(j=1; j<=M; j++)
if(R[i][j]==J[i][j] && R[i][j]>0)
{
if(R[i][j]<ans)
{
ans=R[i][j];
linie=i;
coloana=j;
}
}
g<<ans<<' '<<linie<<' '<<coloana<<'\n';
return 0;
}