Pagini recente » Cod sursa (job #2541532) | Cod sursa (job #2963991) | Cod sursa (job #265639) | Cod sursa (job #2688494) | Cod sursa (job #2310305)
#include <fstream>
#include <cstring>
using namespace std;
int R[103][103], J[103][103];
short int x[10004], y[10004];
char ch[102][102];
const int dx[] = {-1, -1, 0, 1, 1, 1, 0, -1};
const int dy[] = {0, 1, 1, 1, 0, -1, -1, -1};
int i, j, ii, jj, n, m, a, b, c, d, st, dr, k, maxx, tt, t;
int main()
{
ifstream f("rj.in");
ofstream g("rj.out");
f >> n >> m;
f.get();
for(i = 1; i <= n ; i ++)
{
for(j = 1; j <= m; j ++)
{
f.get(ch[i][j]);
if(ch[i][j] == 'R')
{
a = i;
b = j;
}
else if(ch[i][j] == 'J')
{
c = i;
d = j;
}
else if(ch[i][j] == 'X') R[i][j] = J[i][j] = -1;
}
f.get();
}
st = dr = 1;
x[dr] = a;
y[dr] = b;
R[a][b] = 1;
while(st <= dr)
{
i = x[st];
j = y[st];
for(k = 1; k <= 8; k ++)
{
ii = i + dx[k];
jj = j + dy[k];
if(ii >= 1 && ii <= n && jj >= 1 && jj <= m && R[ii][jj] == 0)
{
R[ii][jj] = 1 + R[i][j];
dr ++;
x[dr] = ii;
y[dr] = jj;
}
}
st ++;
}
memset(x, 0, sizeof(x));
memset(y, 0, sizeof(y));
st = dr = 1;
x[dr] = c;
y[dr] = d;
J[c][d] = 1;
while(st <= dr)
{
i = x[st];
j = y[st];
for(k = 1; k <= 8; k ++)
{
ii = i + dx[k];
jj = j + dy[k];
if(ii >= 1 && ii <= n && jj >= 1 && jj <= m && J[ii][jj] == 0)
{
J[ii][jj] = 1 + J[i][j];
dr ++;
x[dr] = ii;
y[dr] = jj;
}
}
st ++;
}
for(i = 1; i <= n; i ++)
for(j = 1; j <= m; j ++)
if(R[i][j] == J[i][j] && R[i][j] > 0)
if(R[i][j] > maxx)
{
maxx = R[i][j];
t = i;
tt = j;
}
g << maxx << " " << t << " " << tt;
return 0;
}