Pagini recente » Cod sursa (job #3288385) | Cod sursa (job #3222204) | Cod sursa (job #1709289) | Cod sursa (job #2892796) | Cod sursa (job #2153765)
#include<fstream>
using namespace std;
ifstream in ("rj.in");
ofstream out ("rj.out");
int dx[9] = {0,0,0,1,-1,-1,1,-1,1}, dy[9] = {0,1,-1,0,0,-1,1,1,-1};
short rom[101][101], jul[101][101];
char ch[105];
pair<short,short>v[10001];
short x,y,a,b,c,d,n,m,j1,j2,r1,r2,minim;
int main (void) {
in >> n >> m;
in.getline (ch+1,101);
for (int i = 1; i <= n; i ++) {
in.getline (ch+1,101);
for (int j = 1; j <= m; j ++) {
if (ch[j] == 'X') {
rom[i][j] = -1;
jul[i][j] = -1;
}
if (ch[j] == 'J') {
jul[i][j] = 1;
j1 = i;
j2 = j;
}
if (ch[j] == 'R') {
rom[i][j] = 1;
r1 = i;
r2 = j;
}
}
}
v[1].first = j1;
v[1].second = j2;
for (int st = 1, dr = 1; st <= dr; st ++) {
a = v[st].first;
b = v[st].second;
for (int i = 1; i <= 8; i ++) {
c = a + dx[i];
d = b + dy[i];
if (c <= n && c >= 1 && d <= m && d >= 1 && jul[c][d] == 0) {
dr ++;
v[dr] = {c,d};
jul[c][d] = jul[a][b] + 1;
}
}
}
v[1].first = r1;
v[1].second = r2;
for (int st = 1, dr = 1; st <= dr; st ++) {
a = v[st].first;
b = v[st].second;
for (int i = 1; i <= 8; i ++) {
c = a + dx[i];
d = b + dy[i];
if (c <= n && c >= 1 && d <= m && d >= 1 && rom[c][d] == 0) {
dr ++;
v[dr] = {c,d};
rom[c][d] = rom[a][b] + 1;
}
}
}
minim = 1e4;
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= m; j ++) {
if (rom[i][j] == jul[i][j] && rom[i][j] != -1&&rom[i][j] != 0) {
if (minim > rom[i][j]) {
minim = rom[i][j];
x = i;
y = j;
}
}
}
}
out <<minim <<" " << x << " " << y;
return 0;
}