Pagini recente » Cod sursa (job #863900) | Cod sursa (job #2424321) | Atasamentele paginii Clasament dedicatie_speciala4 | Cod sursa (job #1467839) | Cod sursa (job #226588)
Cod sursa(job #226588)
#include<fstream.h>
int n,m,x[9]={0,-1,-1,0,1,1,1,0,-1},y[9]={0,0,1,1,1,0,-1,-1,-1},xf,yf,tmin,
tr[102][102],tj[102][102];
char a[102][102];
ifstream fin("rj.in");
ofstream fout("rj.out");
void tras(int t[102][102]);
void read()
{ int i,j;char aux[102];
fin>>n>>m;
for(i=1;i<=n;i++)
{ fin.get();
fin.get(aux,101);
for(j=0;j<m;j++)
{ a[i][j+1]=aux[j];
if(aux[j]=='R')
{ tr[i][j+1]=1;
}
if(aux[j]=='J')
{ tj[i][j+1]=1;
}
}
}
for(i=0;i<=n+1;i++)
a[i][0]='X',
a[i][m+1]='X';
for(i=0;i<=m+1;i++)
a[0][i]='X',
a[n+1][i]='X';
}
int main()
{ int i,j;
read();
tras(tr);
tras(tj);
tmin=i=j=32000;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(tr[i][j]==tj[i][j]&&tr[i][j]!=0&&tr[i][j]<tmin)
xf=i;yf=j,tmin=tr[xf][yf];
fout<<tmin<<' '<<xf<<' '<<yf;
return 0;
}
void tras(int t[102][102])
{ int i,j,sw=0,min,ii,jj;
while(!sw)
{ sw=1;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==' '&&t[i][j]==0)
{ min=32000;
for(int k=1;k<=8;k++)
{ ii=i+x[k],
jj=j+y[k];
if(t[ii][jj]<min&&t[ii][jj]>0)
min=t[ii][jj];
}
if(min!=32000)
{t[i][j]=min+1;sw=0;}
}
}
}