Pagini recente » Cod sursa (job #1076962) | Cod sursa (job #787145) | Cod sursa (job #2783540) | Cod sursa (job #102513) | Cod sursa (job #1224827)
#include <cstdio>
#define MAXN 160
using namespace std;
int dix[8] = {1, 1, 0, -1, -1, -1, 0, 1};
int diy[8] = {0, 1, 1, 1, 0, -1, -1, -1};
int n, m;
char z[MAXN][MAXN];
int r[MAXN][MAXN], jul[MAXN][MAXN];
int nq, finx, finy, pasi;
struct coord
{
int x;
int y;
}c[11005];
coord pozR, pozJ;
void citire()
{
scanf("%d%d\n", &n, &m);
char f;
int ok = 0;
for (int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++){
scanf("%c", &z[i][j]);
if (z[i][j] == '\n')
{
while (j <= m)
z[i][j++] = ' ';
ok = 1;
}
if(z[i][j] == 'R'){
pozR.x =i;
pozR.y =j;
}
else
if(z[i][j] == 'J'){
pozJ.x = i;
pozJ.y = j;
}
}
if (!ok)
scanf("%c", &f);
ok = 0;
}
for (int i=1; i<=n; i++){
for (int j=1; j<=m; j++){
if(z[i][j] == ' '){
r[i][j] = 0;
jul[i][j] = 0;
}
else{
r[i][j] = -1;
jul[i][j] = -2;
}
}
}
}
void lee(int a[MAXN][MAXN], coord poz)
{
coord nou;
nq = 1;
a[poz.x][poz.y] = 1;
c[0] = poz;
for (int i=0; i<nq; i++){
for(int j=0; j<8; j++){
nou.x = c[i].x + dix[j];
nou.y = c[i].y + diy[j];
if (nou.x > 0 && nou.y <=m && nou.y > 0 && nou.x <=n){
if (a[nou.x][nou.y] == 0){
a[nou.x][nou.y] = a[c[i].x][c[i].y] + 1;
c[nq ++] = nou;
}
}
}
}
}
void rezolvare()
{
int ok;
ok =1;
for (int i=1; i<=n && ok==1; i++){
for(int j=1; j<=m && ok==1; j++){
if(r[i][j] != 0 && r[i][j] == jul[i][j]){
printf("%d %d %d", r[i][j], i, j);
ok = 0;
}
// if (jul[i][j] == -2) jul[i][j] = 0;
//printf("%d\t", jul[i][j]);
}
}
}
int main()
{
freopen("rj.in", "r", stdin);
freopen("rj.out", "w", stdout);
citire();
lee(r, pozR);
lee(jul, pozJ);
rezolvare();
return 0;
}