Pagini recente » Cod sursa (job #63943) | Cod sursa (job #355121) | Cod sursa (job #974648) | Cod sursa (job #2276680) | Cod sursa (job #808344)
Cod sursa(job #808344)
#include<iostream>
#include<fstream>
#include<climits>
#include<iomanip>
using namespace std;
ifstream fin ("rj.in");
ofstream fout("rj.out");
int n, m, a[101][101], b[101][101];
int ir, jr, ij, jj;
const int di[8]={1,1,1,0,0,-1,-1,-1},
dj[8]={1,0,-1,1,-1,1,0,-1};
void citire()
{
fin >> n >> m;
fin.get();
char c;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
fin.get(c);
if(c=='X')
{
a[i][j]=-1;b[i][j]=-1;
}
if(c=='R')
{
ir=i;jr=j;
a[i][j]=1;
}
if(c=='J')
{
ij=i;jj=j;
b[i][j]=1;
}
}
fin.get();
}
}
void Lee(int a[101][101], int ii, int ji)
{
unsigned char l[10005], c[10005];
int st=0, dr=0;
l[dr]=ii;c[dr]=ji;
dr++;
while(st<dr)
{
int i=l[st], j=c[st];
for(int k=0;k<8;k++)
{
int i1, j1;
i1=i+di[k]; j1=j+dj[k];
if(i1>0 && i1<n+1 && j1>0 && j1<m+1 && a[i1][j1]==0)
{
a[i1][j1]=a[i][j]+1;
l[dr]=i1;c[dr]=j1;
dr++;
}
}
st++;
}
}
int main()
{
citire();
Lee(a, ir, jr);
Lee(b, ij, jj);
int vmin = INT_MAX;
int ii=0, jj=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i][j] == b[i][j] && a[i][j] > 0 && a[i][j] < vmin)
{
vmin = a[i][j];
ii = i;
jj = j;
}
fout << vmin << " " << ii << " " << jj;
fin.close();
fout.close();
return 0;
}