Pagini recente » Cod sursa (job #1837443) | Cod sursa (job #111076) | Cod sursa (job #1034335) | Cod sursa (job #1780896) | Cod sursa (job #1546489)
#include <bits/stdc++.h>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
int ro[101][101],ju[101][101];
int jul1,jul2,ro1,ro2;
char c[101];
int n,m;
const int dx[]={0,0,-1,1,1,1,-1,-1};
const int dy[]={1,-1,0,0,-1,1,1,-1};
deque<int>qx,qy;
void citire()
{
for(int i=0;i<=n;i++)
{
in.getline(c,101);
for(int j=0;j<=strlen(c);j++)
{
if(c[j]=='X')
{
ro[i][j+1]=-1;
ju[i][j+1]=-1;
}
else if(c[j]=='R')
{
ro1=i;
ro2=j+1;
ro[i][j+1]=-1;
ju[i][j+1]=0;
}
else if(c[j]=='J')
{
jul1=i;
jul2=j+1;
ju[i][j+1]=-1;
ro[i][j+1]=0;
}
else if(c[j]==' ')
{
ro[i][j+1]=0;
ju[i][j+1]=0;
}
}
}
}
void bordare()
{
for(int i=0;i<=n+1;i++)
{
ro[i][0]=ro[i][m+1]=-1;
ju[i][0]=ju[i][m+1]=-1;
}
for(int i=0;i<=m+1;i++)
{
ro[0][i]=ro[n+1][i]=-1;
ju[0][i]=ju[n+1][i]=-1;
}
}
void afisare()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
out<<ju[i][j]<<" ";
out<<'\n';
}
}
void afisare1()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
out<<ro[i][j]<<" ";
out<<'\n';
}
}
void leero()
{
int nx,ny,xx,yy;
while(!qx.empty())
{
nx=qx.front();
qx.pop_front();
ny=qy.front();
qy.pop_front();
for(int i=0 ;i<=7;i++)
{
xx=nx+dx[i];
yy=ny+dy[i];
if(ro[xx][yy]==0)
{
ro[xx][yy]=ro[nx][ny]+1;
qx.push_back(xx);
qy.push_back(yy);
}
}
}
}
void leejul()
{
int nx,ny,xx,yy;
while(!qx.empty())
{
nx=qx.front();
qx.pop_front();
ny=qy.front();
qy.pop_front();
for(int i=0 ;i<=7;i++)
{
xx=nx+dx[i];
yy=ny+dy[i];
if(ju[xx][yy]==0)
{
ju[xx][yy]=ju[nx][ny]+1;
qx.push_back(xx);
qy.push_back(yy);
}
}
}
}
int main()
{
in>>n>>m;
citire();
bordare();
qx.push_back(ro1);
qy.push_back(ro2);
leero();
qx.push_back(jul1);
qy.push_back(jul2);
leejul();
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(ro[i][j]==ju[i][j] && ro[i][j] >0 && ju[i][j]>0)
out<<ro[i][j]+1<<" "<<i<<" "<<j;
return 0;
}