Pagini recente » Cod sursa (job #1244242) | Cod sursa (job #2637313) | Cod sursa (job #474728) | Cod sursa (job #674659) | Cod sursa (job #1786158)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,mat[110][110],fij,fii,d,ii,jj;
int dx[]={1,0,-1,0,1,1,-1,-1};
int dy[]={0,1,0,-1,1,-1,1,-1};
string s;
queue <pair<int,int> > q;
int interior(int i,int j)
{
if(i>=1 && i<=n && j>=1 && j<=m && mat[i][j]!=-1)
return 1;
return 0;
}
void parc(int i,int j)
{
for(d=0;d<=7;d++)
{
ii=i+dx[d];
jj=j+dy[d];
if(interior(ii,jj) && (mat[ii][jj]>mat[i][j]+1 || mat[ii][jj]==0))
{
mat[ii][jj]=mat[i][j]+1;
q.push(make_pair(ii,jj));
}
}
}
void rezultat()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
if(mat[i][j]==mat[fii][fij]/2+1)
{
fout<<mat[i][j]<<" "<<i<<" "<<j<<"\n";
return;
}
}
}
int main()
{
fin>>n>>m;
getline(fin,s);
for(int i=1;i<=n;i++)
{
getline(fin,s);
for(int j=0;j<m;j++)
{
if(s[j]=='R')
{mat[i][j+1]=1;
q.push(make_pair(i,j+1));}
if(s[j]=='X')
mat[i][j+1]=-1;
if(s[j]=='J')
{
fii=i;
fij=j+1;
}
}
}
while(!q.empty())
{
parc(q.front().first,q.front().second);
q.pop();
}
rezultat();
return 0;
}