Pagini recente » Cod sursa (job #507841) | Cod sursa (job #1856702) | Cod sursa (job #2261305) | Cod sursa (job #560745) | Cod sursa (job #1781551)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("rj.in");
ofstream g ("rj.out");
short nl, nc, lp, ls, cp, cs, l, c, i, j, uv = 0, in, sf, rin, rsf, l2, c2, ll, cc;
struct coada
{
int l;
int c;
} v[40000], r[40000];
char m[101][101], x[101];
int main()
{
f >> nl >> nc;
f.getline (x, 100);
for (i = 0; i < nl; i++)
{
f.getline (x, 100);
for (j = 0; j < nc; j++)
{
m[i][j] = x[j];
if (m[i][j] == 'R')
{
r[0].l = i;
r[0].c = j;
}
if (m[i][j] == 'J')
{
v[0].l = i;
r[0].c = j;
}
cout << m[i][j];
}
cout << '\n';
}
in = 0;
sf = 0;
rin = 0;
rsf = 0;
bool gata = 0;
while (gata == 0 && in <= sf && rin <= sf)
{
l = v[in].l;
c = v[in].c;
l2 = r[in].l;
c2 = r[in].c;
uv = m[l][c] + 1;
if (l - 1 >= 1)
if (m[l - 1][c] == 32)
{
m[l - 1][c] = uv;
sf++;
v[sf].l = l - 1;
v[sf].c = c;
}
else if (m[l - 1][c] == 'R')
{
gata = 1;
ll = l - 1;
cc = c;
break;
}
if (l + 1 <= nl)
if (m[l + 1][c] == 32 && gata == 0)
{
m[l + 1][c] = uv;
sf++;
v[sf].l = l + 1;
v[sf].c = c;
}
else if (m[l + 1][c] == 'R')
{
gata = 1;
ll = l + 1;
cc = c;
break;
}
if (c - 1 >= 1)
if (m[l][c - 1] == 32 && gata == 0)
{
m[l][c - 1] = uv;
sf++;
v[sf].l = l;
v[sf].c = c - 1;
}
else if (m[l][c - 1] == 'R')
{
gata = 1;
ll = l;
cc = c - 1;
break;
}
if (c + 1 <= nc)
if (m[l][c + 1] == 32 && gata == 0)
{
m[l][c + 1] = uv;
sf++;
v[sf].l = l;
v[sf].c = c + 1;
}
else if (m[l][c + 1] == 'R')
{
gata = 1;
ll = l;
cc = c + 1;
break;
}
///dddddddddddddddddddddddddddddddddd
if (l2 - 1 >= 1)
if (m[l2 - 1][c2] == 32)
{
m[l2 - 1][c2] = 'R';
sf++;
r[sf].l = l2 - 1;
r[sf].c = c2;
}
else if (m[l2 - 1][c2] != 'X')
{
gata = 1;
ll = l2 - 1;
cc = c2;
break;
}
if (l2 + 1 <= nl)
if (m[l2 + 1][c2] == 0 && gata == 0)
{
m[l2 + 1][c2] = 'R';
sf++;
r[sf].l = l2 + 1;
r[sf].c = c2;
}
else if (m[l2 + 1][c2] != 'X')
{
gata = 1;
ll = l2 + 1;
cc = c2;
break;
}
if (c2 - 1 >= 1)
if (m[l2][c2 - 1] == 0 && gata == 0)
{
m[l2][c2 - 1] = 'R';
sf++;
r[sf].l = l2;
r[sf].c = c2 - 1;
}
else if (m[l2][c2 - 1] != 'X')
{
gata = 1;
ll = l2;
cc = c2 - 1;
break;
}
if (c2 + 1 <= nc)
if (m[l2][c2 + 1] == 0 && gata == 0)
{
m[l2][c2 + 1] = 'R';
sf++;
r[sf].l = l2;
r[sf].c = c2 + 1;
}
else if (m[l2][c2 + 1] != 'X')
{
gata = 1;
ll = l2;
cc = c2 + 1;
break;
}
in++;
rin++;
}
if (gata == 1) g << uv << " " << ll << " " << cc << " ";
return 0;
}