Pagini recente » Cod sursa (job #2059803) | Cod sursa (job #289818)
Cod sursa(job #289818)
#include<stdio.h>
#define IN "rj.in","r",stdin
#define OUT "rj.out","w",stdout
struct pct {
int x,y;
};
const int dx[8]={1,-1,0,0,-1,-1,1,1};
const int dy[8]={0,0,-1,1,-1,1,-1,1};
pct coada[100];
int m,n,xR,yR,xJ,yJ,pozx,pozy;
int a[120][120];
void citire()
{
freopen(IN);
scanf("%d%d\n",&n,&m);
char c;
for(int i = 1; i <= n ; ++i)
{
for(int j = 1; j <= m ;++j)
{
scanf("%c",&c);
if(c == 'R' || c == 'J')
{
if(c == 'R')
{
xR=i;
yR=j;
}
else
{
xJ=i;
yJ=j;
}
a[i][j] = 0;
continue;
}
if(c == 'X')
{
a[i][j] = -1;
continue;
}
else if(c == ' ')
{
a[i][j] = -3;
continue;
}
a[i][j] = 1;
}
scanf("\n");
}
}
void Lee1()
{
int i,k,T=1,sx,sy;
coada[T].x = xR;
coada[T++].y = yR;
for(i = 1 ; i <= T ; ++i)
for(k = 0 ; k < 8 ; ++k)
{
sx = dx[k] + coada[i].x;
sy = dy[k] + coada[i].y;
if(sx <= n && sx >= 1 && sy <= m && sy >= 1 && a[sx][sy] == -3 && !(a[sx][sy] == 0 || a[sx][sy] == -1))
{
coada[T].x = sx;
coada[T++].y = sy;
a[sx][sy] = a[coada[i].x][coada[i].y] + 1;
}
}
for(int i=1;i<=T;++i)
{
coada[i].x=0;
coada[i].y=0;
}
}
void Lee2()
{
int i,k,T=1,sx,sy;
coada[T].x = xJ;
coada[T++].y = yJ;
for(i = 1 ; i <= T ; ++i)
for(k = 0 ; k < 8 ; ++k)
{
sx = dx[k] + coada[i].x;
sy = dy[k] + coada[i].y;
if(sx <= n && sx >= 1 && sy <= m && sy >= 1 && a[coada[i].x][coada[i].y] + 1 < a[sx][sy] && !(a[sx][sy] == 0 || a[sx][sy] == -1))
{
coada[T].x = sx;
coada[T++].y = sy;
a[sx][sy] = a[coada[i].x][coada[i].y] + 1;
}
if(a[coada[i].x][coada[i].y] + 1 == a[sx][sy] )
{
pozx = sx;
pozy = sy;
}
}
}
void afisare()
{
freopen(OUT);
printf("%d %d %d \n",a[pozx][pozy],pozx,pozy);
}
int main()
{
citire();
Lee1();
Lee2();
afisare();
return 0;
}