Pagini recente » Cod sursa (job #3120673) | Cod sursa (job #1652615) | Cod sursa (job #1178) | Cod sursa (job #983396) | Cod sursa (job #2503927)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
int dirl[8]={-1,-1,0,-1,1,1,0,1}, dirc[8]={0,-1,1,1,0,1,-1,-1};
struct ura
{
int l;
int c;
};
ura coada[10001];
int r[102][102], ju[102][102];
void prelucrare(int lp, int cp, int a[102][102])
{
int sf=1, inc=1, lin, col;
a[lp][cp]=1;
coada[1].l=lp;
coada[1].c=cp;
while(inc<=sf){
for(int i=0;i<8;i++){
lin=coada[inc].l+dirl[i];
col=coada[inc].c+dirc[i];
if(a[lin][col]==0){
sf++;
coada[sf].l=lin;
coada[sf].c=col;
a[lin][col]=a[coada[inc].l][coada[inc].c]+1;
}
}
inc++;
}
}
int main()
{
char ch, str[101];
int lp1,lp2,cp1,cp2;
int n,m, minn, linie, coloana;
in>>n>>m;
for(int i=0;i<=n+1;i++){
r[i][0]=-1;
r[i][m+1]=-1;
ju[i][0]=-1;
ju[i][m+1]=-1;
}
for(int i=0;i<=m+1;i++){
r[0][i]=-1;
r[n+1][i]=-1;
ju[0][i]=-1;
ju[n+1][i]=-1;
}
in.get(ch);
for(int i=1;i<=n;i++){
in.getline(str+1,m+1);
for(int j=1;j<=m;j++){
if(str[j]=='X')
r[i][j]=-1;
if(str[j]==' ')
r[i][j]=0;
if(str[j]=='R'){
lp1=i;
cp1=j;
r[i][j]=0;
}
if(str[j]=='J'){
lp2=i;
cp2=j;
r[i][j]=0;
}
ju[i][j]=r[i][j];
}
}
prelucrare(lp1, cp1, r);
prelucrare(lp2, cp2, ju);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(r[i][j]==ju[i][j] && r[i][j]<minn && r[i][j]!=0 && r[i][j]!=-1){
linie=i;
coloana=j;
minn=r[i][j];
}
out<<minn<<" "<<linie<<" "<<coloana;
return 0;
}