Pagini recente » Cod sursa (job #3215796) | Cod sursa (job #3229590) | Cod sursa (job #2871538) | Cod sursa (job #976404) | Cod sursa (job #2551161)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
queue < pair <int, int > > ro;
queue < pair <int, int > > ju;
int n,m;
char s[1000];
int a[1000][1000];
int b[1000][1000];
int c[1000][1000];
int dx[]= {-1,-1,0,1,1,1,0,-1};
int dy[]= {0,1,1,1,0,-1,-1,-1};
void citire()
{
fin>>n>>m;
fin.get();
for(int i=1; i<=n; i++)
{
fin.getline(s,200);
for(int j=0; j<m; j++)
{
if(s[j]=='X')
{
a[i][j]=-1;
b[i][j]=-1;
c[i][j]=-1;
}
else if(s[j]==' ')
{
a[i][j]=0;
b[i][j]=0;
c[i][j]=0;
}
else if(s[j]=='R')
{
ro.push(make_pair(i,j));
}
else
{
if(s[j]=='J')
{
ju.push(make_pair(i,j));
}
}
}
}
b[ro.front().first][ro.front().second]=1;
c[ju.front().first][ju.front().second]=1;
}
void lee_romeo()
{
int inou,jnou;
while(!ro.empty())
{
for(int i=0; i<8; i++)
{
inou=ro.front().first+dx[i];
jnou=ro.front().second+dy[i];
if(b[inou][jnou]==0 && inou>=1 && inou<=n && jnou>=0 && jnou<m)
{
b[inou][jnou]=b[ro.front().first][ro.front().second]+1;
ro.push(make_pair(inou,jnou));
}
}
ro.pop();
}
}
void lee_julieta()
{
int inou,jnou;
while(!ju.empty())
{
for(int i=0; i<8; i++)
{
inou=ju.front().first+dx[i];
jnou=ju.front().second+dy[i];
if(c[inou][jnou]==0 && inou>=1 && inou<=n && jnou>=0 && jnou<m)
{
c[inou][jnou]=c[ju.front().first][ju.front().second]+1;
ju.push(make_pair(inou,jnou));
}
}
ju.pop();
}
}
void solve()
{
int x=0,y=0;
int mini=INT_MAX;
for(int i=1;i<=n;i++)
{
for(int j=0;j<m;j++)
{
if(b[i][j]==c[i][j] && b[i][j]!=-1 && b[i][j]!=0 && b[i][j]<=mini)
{
x=i;
y=j;
mini=b[i][j];
}
}
}
fout<<mini<<' '<<x<<' '<<y+1;
}
int main()
{
citire();
lee_romeo();
lee_julieta();
solve();
}