Pagini recente » Cod sursa (job #2285545) | Cod sursa (job #262073) | Cod sursa (job #1597348)
#include<fstream>
#include<string>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int main()
{
static int n, m,rom[2][10404],jul[2][10404],r[102][102],y[102][102],b[102][102];
fin >> n >> m;
string s;
getline(fin, s);
for (int i = 1; i <= n; i++)
{
getline(fin, s);
for (int j = 1; j <= m; j++)
{
if (s[j - 1] == 'R')
{
r[i][j] = 1; rom[0][0] = i; rom[1][0] = j;
}
if (s[j - 1] == 'J')
{
y[i][j] = 1; jul[0][0] = i; jul[1][0] = j;
}
if (s[j - 1] == 'X')
{
b[i][j] = 1;
}
}
}
int r1 = 0, r2 = 0;
int nr = 2,nr2=2, min = 0, i1 = 0, i2 = 1,i22=1, i3 = 0, i4 = 1,i44=1;
while (min==0)
{
int ii = rom[0][i1], jj = rom[1][i1];
if (r[ii][jj] != 0 && r[ii][jj] == y[ii][jj])
{
r1 = ii;
r2 = jj;
min = r[ii][jj];
}
if (b[ii + 1][jj]==0 && r[ii+ 1][jj] == 0&&ii+1<=n)
{
rom[0][i2] = ii + 1; rom[1][i2] = jj; r[ii + 1][jj] = nr; i2++;
}
if (b[ii -1][jj]==0 && r[ii - 1][jj] == 0 && ii - 1>=1)
{
rom[0][i2] = ii - 1; rom[1][i2] = jj; r[ii - 1][jj] = nr; i2++;
}
if (b[ii][jj+1]==0 && r[ii][jj+1] == 0 && jj + 1 <= m)
{
rom[0][i2] = ii; rom[1][i2] = jj+1; r[ii][jj+1] = nr; i2++;
}
if (b[ii][jj - 1]==0 && r[ii][jj - 1] == 0 && jj - 1 >= 1)
{
rom[0][i2] = ii; rom[1][i2] = jj - 1; r[ii][jj - 1] = nr; i2++;
}
i1++;
if (i1 == i22)
{
nr++; i22 = i2;
}
ii = jul[0][i3], jj = jul[1][i3];
if (b[ii + 1][jj]==0 && y[ii+ 1][jj] == 0&&ii+1<=n)
{
jul[0][i4] = ii + 1; jul[1][i4] = jj; y[ii + 1][jj] = nr2; i4++;
}
if (b[ii -1][jj]==0 && y[ii - 1][jj] == 0 && ii - 1>=1)
{
jul[0][i4] = ii - 1; jul[1][i4] = jj; y[ii - 1][jj] = nr2; i4++;
}
if (b[ii][jj+1]==0 && y[ii][jj+1] == 0 && jj + 1 <= m)
{
jul[0][i4] = ii; jul[1][i4] = jj+1; y[ii][jj+1] = nr2; i4++;
}
if (b[ii][jj - 1]==0 && y[ii][jj - 1] == 0 && jj - 1 >= 1)
{
jul[0][i4] = ii; jul[1][i4] = jj - 1; y[ii][jj - 1] = nr2; i4++;
}
i3++;
if (i3 == i44)
{
nr2++; i44 = i4;
}
}
fout << r1 << " " << min - 1 << " " << r2 ;
}