Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/stalinskaya_chiriac_radu | Statistici Atudorei Miruna Gabriela (atudoreimiruna) | Cod sursa (job #1354064) | Cod sursa (job #345664)
Cod sursa(job #345664)
#include<stdio.h>
#include<string.h>
const int dir1[8]={1,1,1,0,0,-1,-1,-1};
const int dir2[8]={-1,0,1,1,-1,0,-1,1};
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
int i,j,u,p,queue[10005][2],start[2][2],n,m;
char map[2][107][107];
int mapx[2][107][107];
scanf("%d%d",&n,&m);
fgets(map[0][0],200,stdin);
for(i=0;i<n;i++) {
fgets(map[0][i],200,stdin);
strcpy(map[1][i],map[0][i]);
for(j=0;j<m;j++){
if(map[0][i][j]=='R') {
start[0][0]=i;
start[0][1]=j;
}
if(map[0][i][j]=='J') {
start[1][0]=i;
start[1][1]=j;
}
}
}
for(i=0;i<2;i++) {
p=u=0;
queue[p][0]=start[i][0];
queue[p][1]=start[i][1];
mapx[i][start[i][0]][start[i][1]]=0;
map[i][start[i][0]][start[i][1]]='Y';
while(p<=u) {
for(j=0;j<8;j++)
if(queue[p][0]+dir1[j]>=0 && queue[p][0]+dir1[j]<n)
if(queue[p][1]+dir2[j]>=0 && queue[p][1]+dir2[j]<m)
if(map[i][queue[p][0]+dir1[j]][queue[p][1]+dir2[j]]==' ') {
queue[++u][0]=queue[p][0]+dir1[j];
queue[u][1]=queue[p][1]+dir2[j];
mapx[i][queue[p][0]+dir1[j]][queue[p][1]+dir2[j]]=mapx[i][queue[p][0]][queue[p][1]]+1;
map[i][queue[p][0]+dir1[j]][queue[p][1]+dir2[j]]='Y';
}
p++;
}
}
int mi=n,mj=m;
mapx[0][mi][mj]=n*m+1;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(mapx[0][i][j]==mapx[1][i][j] && map[0][i][j]=='Y' && mapx[0][i][j] < mapx[0][mi][mj]) {
mi=i;
mj=j;
}
printf("%d %d %d",mapx[0][mi][mj]+1,mi+1,mj+1);
return 0;
}