Pagini recente » Borderou de evaluare (job #2830570) | Cod sursa (job #668905) | Cod sursa (job #3261602) | Borderou de evaluare (job #978052) | Cod sursa (job #1970666)
#include<fstream>
using namespace std;
ifstream in ("rj.in" );
ofstream out("rj.out");
short n, m, i ,j,dr,a,b,c,d,st,alfa,beta, minim,x,y,ok;
short dx[9] = { 0,0,0,1,-1,1,1,-1,-1},dy[9] = { 0,1,-1,0, 0,1,-1,-1,1};
char cha[105][105];
short matrom[105][105], matjul[105][105];
pair<short,short>v[10005];
int main(){
in >> n >> m;
in.getline( cha[0] + 1, 105 );
for( i = 1; i <= n; i ++ ) {
in.getline( cha[i] + 1, 105 );
}
for( i = 1; i <= n; i ++ ){
for( j = 1; j <= m; j ++ ){
if( cha[i][j] == 'R' ){
matrom[i][j] = 1;
dr ++;
v[dr].first = i;
v[dr].second = j;
}
if( cha[i][j] == 'J'){
x = i;
y = j;
}
if( cha[i][j] == 'X' ){
matrom[i][j] = -1;
matjul[i][j] = -1;
}
}
}
for( st = 1; st <= dr; st ++ ){
for( i = 1; i <= 8; i ++ ){
a = v[st].first;
b = v[st].second;
c = a + dx[i];
d = b + dy[i];
if( c <= n && d <= m && c >= 1 && d >= 1 && matrom[c][d] == 0 ){
dr ++;
v[dr].first = c;
v[dr].second = d;
matrom[c][d] = matrom[a][b] + 1;
}
}
}
dr = 1;
v[dr].first = x;
v[dr].second = y;
matjul[x][y] = 1;
for( st = 1; st <= dr; st ++ ){
for( i = 1; i <= 8; i ++ ){
a = v[st].first;
b = v[st].second;
c = a + dx[i];
d = b + dy[i];
if( c <= n && d <= m && c >= 1 && d >= 1 && matjul[c][d] == 0 ){
dr ++;
v[dr].first = c;
v[dr].second = d;
matjul[c][d] = matjul[a][b] + 1;
}
}
}
for( i = 1; i <= n; i ++ ){
for( j = 1; j <= m; j ++ ){
if( matjul[i][j] == matrom[i][j]&& matjul[i][j] > 0 ){
if( ok == 0 ){
ok = 1;
minim = matjul[i][j];
alfa = i;
beta = j;
}
if( matjul[i][j] < minim ){
minim = matjul[i][j];
alfa = i;
beta = j;
}
}
}
}
out << minim <<" " << alfa <<" "<<beta;
return 0;
}