Pagini recente » Cod sursa (job #668301) | Cod sursa (job #2607599) | Cod sursa (job #706137) | Cod sursa (job #369388) | Cod sursa (job #1023452)
#include <fstream>
#include <iomanip>
using namespace std;
ifstream is("rj.in");
ofstream os("rj.out");
int x[102][102];
int x2[102][102];
int x3[102][102];
int rp1,rp2,jp1,jp2;
int n,m;
int vecin1[] = {-1,-1,0,1,1,1,0,-1};
int vecin2[] = {0,1,1,1,0,-1,-1,-1};
int minim = 999999;
int u1,u2;
bool Ok1( int i, int j)
{
if ( i < 1 || j < 1 || i > n || j > m )
return false;
if ( x[i][j] != 0 )
return false;
return true;
}
bool Ok2( int i, int j)
{
if ( i < 1 || j < 1 || i > n || j > m )
return false;
if ( x2[i][j] != 0 )
return false;
return true;
}
void Read()
{
char v;
is >> n >> m;
is.get(v);
for ( int i = 1; i <= n; i++ )
{
for ( int j = 1; j <= m; j++ )
{
is.get(v);
if ( int(v) == 88 )
{
x[i][j] = -1;
x2[i][j] = -1;
}
if ( int(v) == 82 )
{
x[i][j] = 0;
x2[i][j] = 0;
rp1 = i;
rp2 = j;
}
if ( int(v) == 32 )
{
x[i][j] = 0;
x2[i][j] = 0;
}
if ( int(v) == 74 )
{
x[i][j] = 0;
x2[i][j] = 0;
jp1 = i;
jp2 = j;
}
}
is.get(v);
}
}
void Lee1()
{
int pas(1);
int y1,y2;
bool modif = true;
while ( modif )
{
modif = false;
for ( int i = 1; i <= n; i++ )
{
for ( int j = 1; j <= m; j++ )
{
if ( x[i][j] == pas )
{
modif = true;
for ( int d = 0; d < 8; d++ )
{
y1 = i + vecin1[d];
y2 = j + vecin2[d];
if ( Ok1(y1,y2) )
x[y1][y2] = pas+1;
}
}
}
}
pas++;
}
}
void Lee2()
{
int pas(1);
int y1,y2;
bool modif = true;
while ( modif )
{
modif = false;
for ( int i = 1; i <= n; i++ )
{
for ( int j = 1; j <= m; j++ )
{
if ( x2[i][j] == pas )
{
modif = true;
for ( int d = 0; d < 8; d++ )
{
y1 = i + vecin1[d];
y2 = j + vecin2[d];
if ( Ok2(y1,y2) )
x2[y1][y2] = pas+1;
}
}
}
}
pas++;
}
}
void Verify()
{
for ( int i = 1; i <= n; i++ )
for ( int j = 1; j <= m; j++ )
{
if ( x[i][j] == x2[i][j] && x[i][j] > 0 )
{
if ( x[i][j] < minim )
{
minim = x[i][j];
u1 = i;
u2 = j;
}
}
}
}
int main()
{
Read();
x[rp1][rp2] = 1;
x2[jp1][jp2] = 1;
Lee1();
Lee2();
Verify();
os << minim << " ";
os << u1 << " ";
os << u2;
return 0;
}