Pagini recente » Cod sursa (job #3194809) | Cod sursa (job #2343207) | Cod sursa (job #1949154) | Cod sursa (job #2016217) | Cod sursa (job #2393498)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,romeo[101][101],julieta[101][101],i,j,xromeo,xjulieta,yromeo,yjulieta,lg,x,y,minim;
char v[101][101],c;
pair<int,int>coada[100001],sol;
bool okromeo()
{
if(x<0||y<0||x>n-1||y>n-1||romeo[x][y]!=0)
return 0;
return 1;
}
bool okjulieta()
{
if(x<0||y<0||x>n-1||y>n-1||julieta[x][y]!=0)
return 0;
return 1;
}
int main()
{
fin>>n>>m;
int dirx[10]={-1,1,0,0,-1,1,-1,1};
int diry[10]={0,0,1,-1,-1,1,1,-1};
for(i=0;i<n;i++)
{
fin.get();
fin.get(v[i],1001);
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(v[i][j]=='\0')
v[i][j]=' ';
if(v[i][j]=='R')
{
xromeo=i;
yromeo=j;
}
if(v[i][j]=='J')
{
xjulieta=i;
yjulieta=j;
}
if(v[i][j]=='X')
{
romeo[i][j]=-2;
julieta[i][j]=-2;
}
}
}
coada[1].first=xromeo;
coada[1].second=yromeo;
lg=1;
romeo[xromeo][yromeo]=1;
for(i=1;i<=lg;i++)
{
for(j=0;j<8;j++)
{
x=coada[i].first+dirx[j];
y=coada[i].second+diry[j];
if(okromeo())
{
romeo[x][y]=romeo[coada[i].first][coada[i].second]+1;
lg++;
coada[lg].first=x;
coada[lg].second=y;
}
}
}
coada[1].first=xjulieta;
coada[1].second=yjulieta;
lg=1;
julieta[xjulieta][yjulieta]=1;
for(i=1;i<=lg;i++)
{
for(j=0;j<8;j++)
{
x=coada[i].first+dirx[j];
y=coada[i].second+diry[j];
if(okjulieta())
{
julieta[x][y]=julieta[coada[i].first][coada[i].second]+1;
lg++;
coada[lg].first=x;
coada[lg].second=y;
}
}
}
minim=1000000000;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
if(romeo[i][j]==julieta[i][j]&&romeo[i][j]>0&&julieta[i][j]>0)
{
if(romeo[i][j]<minim)
{
minim=romeo[i][j];
sol.first=i+1;
sol.second=j+1;
}
}
}
fout<<minim<<" "<<sol.first<<" "<<sol.second;
return 0;
}