Pagini recente » Cod sursa (job #764909) | Cod sursa (job #2331309) | Cod sursa (job #1932375) | Cod sursa (job #2389824) | Cod sursa (job #2665207)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n, m, iR, jR, iJ, jJ, minim, soli, solj, cnt;
string s;
char ch;
char a[101][101];
int R[101][101], J[101][101];
int di[] = {-1,1,0,0,1,1,-1,-1};
int dj[] = {0,0,1,-1,1,-1,1,-1};
struct solutie{
int val, x, y;
}v[100*100];
bool cmp(solutie a, solutie b){
if(a.val == b.val){
if(a.y == b.y)
return a.x < b.x;
else
return a.y < b.y;
}
return a.val < b.val;
}
void lee(int initi, int initj, int M[][101]){
int c[2][101*101];
int st, dr;
st = dr = 1;
c[0][1] = initi;
c[1][1] = initj;
M[initi][initj] = 1;
while(st <= dr){
int ic = c[0][st];
int jc = c[1][st];
++st;
for (int d = 0; d <= 7; ++d) {
if(ic + di[d] >= 1 && ic + di[d] <= n && jc + dj[d] >= 1 && jc + dj[d] <= n && a[ic + di[d]][jc + dj[d]] != 'X' && M[ic + di[d]][jc + dj[d]] == 0){
M[ic + di[d]][jc + dj[d]] = M[ic][jc] + 1;
++dr;
c[0][dr] = ic + di[d];
c[1][dr] = jc + dj[d];
}
}
}
}
int main() {
fin >> n >> m;
getline(fin, s);
for (int i = 1; i <= n; ++i) {
getline(fin, s);
for (int j = 1; j <= m; ++j) {
a[i][j] = s[j-1];
if(a[i][j] == 'R') {
iR = i;
jR = j;
}
if(a[i][j] == 'J'){
iJ = i;
jJ = j;
}
}
}
lee(iR, jR, R);
lee(iJ, jJ, J);
minim = 200000000;
cnt = 0;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
if(R[i][j] == J[i][j] && R[i][j] != 0) {
v[++cnt].val = R[i][j];
v[cnt].x = i;
v[cnt].y = j;
}
}
}
sort(v+1, v + cnt +1, cmp);
fout << v[1].val << " " << v[1].x << " " << v[1].y;
return 0;
}