Pagini recente » Cod sursa (job #2339815) | Cod sursa (job #3240986) | Cod sursa (job #1190834) | Cod sursa (job #988429) | Cod sursa (job #2060214)
#include <iostream>
#include <cstdio>
#include <stdio.h>
using namespace std;
int directieL[8]={-1,-1,0,1,1,1,0,-1};
int directieC[8]={0,1,1,1,0,-1,-1,-1};
int r[101][101];
int j[101][101];
int coadarL[10001],coadarC[10001];
int coadajL[10001],coadajC[10001];
int main()
{
freopen ("rj.in","r",stdin);
freopen ("rj.out","w",stdout);
int n,m;
char a='a';
cin>>n>>m;
a=getchar();
a='a';
for (int i=0 ; i<=n+1 ; i++)
{
r[i][0]=-1;
j[i][0]=-1;
r[i][m+1]=-1;
j[i][m+1]=-1;
}
for (int i=0 ; i<=m+1 ; i++)
{
r[0][i]=-1;
j[0][i]=-1;
r[n+1][i]=-1;
j[n+1][i]=-1;
}
int j1=1;
for (int i=1 ; i<=n ; i++)
{
j1=1;
a='a';
while (a!='\n')
{
a=getchar();
if (a=='X')
{
r[i][j1]=-1;
j[i][j1]=-1;
}
if (a=='R')
{
coadarL[1]=i;
coadarC[1]=j1;
r[i][j1]=1;
}
if (a=='J')
{
coadajL[1]=i;
coadajC[1]=j1;
j[i][j1]=1;
}
j1++;
}
}
int ic=1,sf=1;
int l,c;
while (ic<=sf)
{
for (int i=0 ; i<8 ; i++)
{
l=coadarL[ic]+directieL[i];
c=coadarC[ic]+directieC[i];
if (r[l][c]==0)
{
r[l][c]=r[coadarL[ic]][coadarC[ic]]+1;
sf++;
coadarL[sf]=l;
coadarC[sf]=c;
}
}
ic++;
}
ic=1;sf=1;
while (ic<=sf)
{
for (int i=0 ; i<8 ; i++)
{
l=coadajL[ic]+directieL[i];
c=coadajC[ic]+directieC[i];
if (j[l][c]==0)
{
j[l][c]=j[coadajL[ic]][coadajC[ic]]+1;
sf++;
coadajL[sf]=l;
coadajC[sf]=c;
}
}
ic++;
}
int min1=10001;
int x1=13,y1=13;
for (int i=1 ; i<=n ; i++)
for (int j1=1 ; j1<=m ; j1++)
{
if (r[i][j1]==j[i][j1] && r[i][j1]>0)
if (min1>r[i][j1])
{
min1=r[i][j1];
x1=i;
y1=j1;
}
}
cout<<min1<<" "<<x1<<" "<<y1;
return 0;
}