Pagini recente » Cod sursa (job #2968181) | Cod sursa (job #1231364) | Cod sursa (job #744928) | Istoria paginii utilizator/thegodyato | Cod sursa (job #2244518)
#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,xj,yj,xr,u,yr,x[101][101];
int dlin[9]={0, 1, 1, 1, 0, -1, -1, -1 };
int dcol[9]={1, 1, 0, -1, -1, -1, 0, 1};
typedef struct {int x,y;}COORD;
COORD c[10001];
void citire()
{int j,i;
char l[101];
fin>>n>>m;
fin.getline(l,100);
for(i=0; i<n; i++)
{fin.getline(l,100);
for(j=0; j<m; j++)
{if(l[j] == 'X')
x[i][j] = -1;
if(l[j] == 'J')
{xj=i;
yj=j;
}
if(l[j] == 'R')
{xr=i;
yr=j;
}}
}
}
int LEE()
{ COORD s;
int p,i,xn,yn;
p=u=1;
c[1].x=xr;
c[1].y=yr;
x[xr][yr]=1;
while(p<=u && !x[xj][yj])
{s=c[p++];
for(i=0; i<9; i++)
{ xn=s.x+dlin[i];
yn=s.y+dcol[i];
if(!x[xn][yn] && xn<n && xn>=0 && yn<m && yn>=0)
{
x[xn][yn]=1+x[s.x][s.y];
c[++u].x=xn;
c[u].y=yn;
}
}
}
return x[xj][yj];
}
int main()
{citire();
int p,i,j;
p=(LEE()+1)/2;
fout<<p<<' '; bool ok=1;
for(i=0; i<n; i++)
if(ok)
for(j=0; j<m; j++)
if(x[i][j]==p)
{fout<<i+1<<' '<<j+1; ok=0;
break;}
return 0;
}