Pagini recente » Cod sursa (job #2489253) | Cod sursa (job #546957) | Cod sursa (job #1937259) | Cod sursa (job #2170784) | Cod sursa (job #1597528)
#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 = 0; i <= n; i++)
{
for (int j = 0; j <= m; j++)
{
if (j == 0 || i == 0 || i == n || j == m)
{
b[i][j] = 1;
}
}
}
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 (i1<i2||i3<i4)
{
int ii = rom[0][i1], jj = rom[1][i1];
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 (y[ii + 1][jj] != 0)
{
r1 = ii + 1;
r2 = jj;
mi
}*/
}
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++;
}
if (b[ii+1][jj - 1] == 0 && r[ii+1][jj - 1] == 0 && ii+1<=n&&jj - 1 >= 1)
{
rom[0][i2] = ii+1; rom[1][i2] = jj - 1; r[ii+1][jj - 1] = nr; i2++;
}
if (b[ii-1][jj - 1] == 0 && r[ii - 1][jj - 1] == 0 && ii- 1 >= 1&&jj - 1 >= 1)
{
rom[0][i2] = ii - 1; rom[1][i2] = jj - 1; r[ii-1][jj - 1] = nr; i2++;
}
if (b[ii + 1][jj + 1] == 0 && r[ii + 1][jj + 1] == 0 && ii + 1 <= n&&jj + 1 <=m)
{
rom[0][i2] = ii + 1; rom[1][i2] = jj + 1; r[ii + 1][jj + 1] = nr; i2++;
}
if (b[ii - 1][jj + 1] == 0 && r[ii - 1][jj + 1] == 0 && ii - 1 >=1&&jj + 1 <= m)
{
rom[0][i2] = ii - 1; rom[1][i2] = jj + 1; r[ii -1][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++;
}
if (b[ii+1][jj - 1] == 0 && y[ii+1][jj - 1] == 0 && ii+1<=n&&jj - 1 >= 1)
{
jul[0][i4] = ii+1; jul[1][i4] = jj - 1; y[ii+1][jj - 1] = nr2; i4++;
}
if (b[ii-1][jj - 1] == 0 && y[ii - 1][jj - 1] == 0 && ii- 1 >= 1&&jj - 1 >= 1)
{
jul[0][i4] = ii - 1; jul[1][i4] = jj - 1; y[ii-1][jj - 1] = nr2; i4++;
}
if (b[ii + 1][jj + 1] == 0 && y[ii + 1][jj + 1] == 0 && ii + 1 <= n&&jj + 1 <=m)
{
jul[0][i4] = ii + 1; jul[1][i4] = jj + 1; y[ii + 1][jj + 1] = nr2; i4++;
}
if (b[ii - 1][jj + 1] == 0 && y[ii - 1][jj + 1] == 0 && ii - 1 >=1&&jj + 1 <= m)
{
jul[0][i4] = ii - 1; jul[1][i4] = jj + 1; y[ii -1][jj + 1] = nr2; i4++;
}
i3++;
if (i3 == i44)
{
nr2++; i44 = i4;
}
if (r[ii][jj] != 0 && r[ii][jj] == y[ii][jj])
{
r1 = ii;
r2 = jj;
min = r[ii][jj];
}
}
min = 100000;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
if (r[i][j] == y[i][j]&&min>r[i][j]&&r[i][j]!=0)
{
min = r[i][j];
r1 = i;
r2 = j;
}
}
}
fout << min << " " << r1 << " " << r2;
}