Pagini recente » Cod sursa (job #2348389) | Cod sursa (job #2821601) | Cod sursa (job #533458) | Cod sursa (job #701165) | Cod sursa (job #2202827)
#include <iostream>
#include <fstream>
#include <string>
#define MAX 101
#define MAX_INT 10000000000
using namespace std;
char a[MAX][MAX];
int r[MAX][MAX], J[MAX][MAX], lin[] = {-1, -1, 0, 1, 1, 1, 0, -1}, col[] = {0, 1, 1, 1, 0, -1, -1, -1};
struct
{
int x;
int y;
}coada[MAX * MAX];
int main()
{
int n, m, i, j, rx, ry, jx, jy, inc, sf, linie, coloana, Min = MAX_INT, x, y;
char c;
ifstream fin("rj.in");
ofstream fout("rj.out");
fin >> n >> m;
for(i = 0; i <= n; i++)fin.getline(a[i], MAX);
for(i = 1; i <= n; i++)
for(j = m; j >= 1; j--)a[i][j] = a[i][j - 1];
for(i = 1; i <= n; i++)
for(j = 1; j <= m; j++)
if(a[i][j] == 'R')
{
rx = i;
ry = j;
}
else if(a[i][j] == 'J')
{
jx = i;
jy = j;
}
inc = sf = 1;
coada[inc].x = rx;
coada[sf].y = ry;
r[rx][ry] = 1;
while(inc <= sf)
{
for(i = 0; i <= 7; i++)
{
linie = coada[inc].x + lin[i];
coloana = coada[inc].y + col[i];
if(linie >= 1 && coloana >= 1 && linie <= n && coloana <= m && r[linie][coloana] == 0 && a[linie][coloana] == ' ')
{
sf++;
coada[sf].x = linie;
coada[sf].y = coloana;
r[linie][coloana] = r[coada[inc].x][coada[inc].y] + 1;
}
}
inc++;
}
inc = sf = 1;
coada[inc].x = jx;
coada[sf].y = jy;
J[jx][jy] = 1;
while(inc <= sf)
{
for(i = 0; i <= 7; i++)
{
linie = coada[inc].x + lin[i];
coloana = coada[inc].y + col[i];
if(linie >= 1 && coloana >= 1 && linie <= n && coloana <= m && J[linie][coloana] == 0 && a[linie][coloana] == ' ')
{
sf++;
coada[sf].x = linie;
coada[sf].y = coloana;
J[linie][coloana] = J[coada[inc].x][coada[inc].y] + 1;
}
}
inc++;
}
for(i = 1; i <= n; i++)
for(j = 1; j <= m; j++)
if(r[i][j] == J[i][j] && r[i][j] != 0 && Min > r[i][j])
{
x = i;
y = j;
Min = r[i][j];
}
fout << Min << " " << x << " " << y;
fin.close();
fout.close();
return 0;
}