Pagini recente » Cod sursa (job #1646006) | Cod sursa (job #2724122) | Borderou de evaluare (job #1485755) | Winter Challenge, Clasament pentru clasele IX-X | Cod sursa (job #645403)
Cod sursa(job #645403)
#include<fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int n,m,i,tmin,ar[105][105],aj[105][105],px,py,ok,a,u,p,j,xr,yr,xj,yj;
char s[105];
void bordcit()
{
for(i=0;i<=n+1;i++)
{
ar[i][0]=ar[i][m+1]=aj[i][0]=aj[i][m+1]=-1;
}
for(i=0;i<=m+1;i++)
{
ar[0][i]=ar[n+1][i]=aj[0][i]=aj[n+1][i]=-1;
}
for(i=0;i<=n;i++)
{
f.getline(s,105);
for(j=0;j<m;j++)
{
if(s[j]=='X')
{
ar[i][j+1]=aj[i][j+1]=-1;
}
if(s[j]=='R'){xr=i;yr=j+1;}
if(s[j]=='J'){xj=i;yj=j+1;}
}
}
}
struct pct{int x,y;}c[11025];
int dx[8]={-1,-1,-1,0,1,1,1,0};int dy[8]={-1,0,1,1,1,0,-1,-1};
void lee(int x1,int y1,int a[105][105])
{
c[1].x=x1;c[1].y=y1;
p=u=1;
a[x1][y1]=1;
while(p<=u)
{
pct z=c[p];
for(i=0;i<8;i++)
{
z.x=c[p].x+dx[i];
z.y=c[p].y+dy[i];
if(a[z.x][z.y]==0)
{
a[z.x][z.y]=a[c[p].x][c[p].y]+1;
//a[z.x][z.y]=1;
c[++u].x=z.x;
c[u].y=z.y;
}
}
p++;
}
}
void rezolvare()
{
bordcit();
lee(xr,yr,ar);
lee(xj,yj,aj);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(ar[i][j]==aj[i][j] && ar[i][j]>1)
{
if(ok==0){tmin=ar[i][j];ok=1;px=i;py=j;}
else
{
if(ar[i][j]<tmin)
{
tmin=ar[i][j];
px=i;py=j;
}
}
}
}
}
g<<tmin<<' '<<px<<' '<<py;return;
}
int main()
{
f>>n>>m;
rezolvare();
return 0;
}