Pagini recente » Cod sursa (job #2841199) | Cod sursa (job #2278934) | Cod sursa (job #1798463) | Cod sursa (job #1605039) | Cod sursa (job #1655399)
#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int n,m,i,j,roi,roj,jui,juj,pas,ok,mi,ii,jj;
int a[101][101],b[101][101];
char x;
int main()
{ f>>n>>m;
f.get(x);
i=1;
for (i=1;i<=n;++i) {
for (j=1;j<=m;++j) {
f.get(x);
if (x==88) {
a[i][j]=-1;
b[i][j]=-1;}
else if (x==82) {
roi=i;
roj=j;}
else if (x==74) {
jui=i;
juj=j;}
else if (x==10)
--j;}
if (j==m+1 && i==n+1)
break;
}
pas=1;
a[roi][roj]=1;
while (1) {
ok=0;
for (i=1;i<=n;++i)
for (j=1;j<=m;++j)
if (a[i][j]==pas) {
if (i>1 && a[i-1][j]==0) {
ok=1;
a[i-1][j]=pas+1;}
if (j<m && a[i][j+1]==0) {
ok=1;
a[i][j+1]=pas+1;}
if (i<n && a[i+1][j]==0) {
ok=1;
a[i+1][j]=pas+1;}
if (j>1 && a[i][j-1]==0) {
ok=1;
a[i][j-1]=pas+1;}
if (i>1 && j<m && a[i-1][j+1]==0) {
ok=1;
a[i-1][j+1]=pas+1;}
if (i<n && j<m && a[i+1][j+1]==0) {
ok=1;
a[i+1][j+1]=pas+1;}
if (i<n && j>1 && a[i+1][j-1]==0) {
ok=1;
a[i+1][j-1]=pas+1;}
if (i>1 && j>1 && a[i-1][j-1]==0) {
ok=1;
a[i-1][j-1]=pas+1;}}
if (ok==0)
break;
++pas;}
pas=1;
b[jui][juj]=1;
while (1) {
ok=0;
for (i=1;i<=n;++i)
for (j=1;j<=m;++j)
if (b[i][j]==pas) {
if (i>1 && b[i-1][j]==0) {
ok=1;
b[i-1][j]=pas+1;}
if (j<m && b[i][j+1]==0) {
ok=1;
b[i][j+1]=pas+1;}
if (i<n && b[i+1][j]==0) {
ok=1;
b[i+1][j]=pas+1;}
if (j>1 && b[i][j-1]==0) {
ok=1;
b[i][j-1]=pas+1;}
if (i>1 && j<m && b[i-1][j+1]==0) {
ok=1;
b[i-1][j+1]=pas+1;}
if (i<n && j<m && b[i+1][j+1]==0) {
ok=1;
b[i+1][j+1]=pas+1;}
if (i<n && j>1 && b[i+1][j-1]==0) {
ok=1;
b[i+1][j-1]=pas+1;}
if (i>1 && j>1 && b[i-1][j-1]==0) {
ok=1;
b[i-1][j-1]=pas+1;}}
if (ok==0)
break;
++pas;}
mi=999999999;
for (i=1;i<=n;++i)
for (j=1;j<=m;++j)
if (a[i][j]!=-1 && a[i][j]==b[i][j] && a[i][j]<mi) {
mi=a[i][j];
ii=i;
jj=j;}
g<<ii<<" "<<jj<<" "<<mi<<'\n';
return 0;
}