Pagini recente » Cod sursa (job #3226957) | Cod sursa (job #1734050) | Cod sursa (job #489301) | Cod sursa (job #1096483) | Cod sursa (job #1143990)
#include <fstream>
#include <cstring>
using namespace std;
int a[101][101];
int main()
{int n,i,j,xr,yr,xj,yj,x1r,y1r,x1j,y1j,pr,ur,pj,uj,m,po=0;
struct poz {int l,c;};
char ma[101];
ifstream f("rj.in");
ofstream g("rj.out");
poz coadar[10201];
poz coadaj[10201];
f>>n>>m;
int dl[4],dc[4];
dl[0]=-1;dc[0]=0;dl[1]=0;dc[1]=1;dl[2]=1;dc[2]=0;dl[3]=0;dc[3]=-1;
for (j=0;j<=n+1;j++)
a[0][j]=-1;
for (i=0;i<=m+1;i++)
a[i][0]=-1;
for (i=0;i<=m+1;i++)
a[i][m+1]=-1;
for (j=0;j<=n+1;j++)
a[n+1][j]=-1;
for(i=0;i<=n;i++)
{f.getline(ma,101);
for(j=0;j<=m;j++)
{if(ma[j]=='R'){xr=i; yr=j+1; a[i][j+1]=1; }
if(ma[j]=='J'){xj=i; yj=j+1; a[i][j+1]=1;}
if(ma[j]=='X') a[i][j+1]=-1;
}
}
coadar[0].l=xr;
coadar[0].c=yr;
coadaj[0].l=xj;
coadaj[0].c=yj;
pr=0;
ur=0;
pj=0;
uj=0;
int ok=0;
while (pr<=ur&&pj<=uj)
{
xr=coadar[pr].l; yr=coadar[pr].c;
pr++;
for (i=0;i<4;i++)
{x1r=xr+dl[i]; y1r=yr+dc[i];
if (a[x1r][y1r]==0)
{a[x1r][y1r]=a[xr][yr]+1;
ur++;
coadar[ur].l=x1r; coadar[ur].c=y1r;
}
}
xj=coadaj[pj].l; yj=coadaj[pj].c;
pj++;
for (i=0;i<4;i++)
{x1j=xj+dl[i]; y1j=yj+dc[i];
if (a[x1j][y1j]==0)
{a[x1j][y1j]=a[xj][yj]+1;
uj++;
coadaj[uj].l=x1j; coadaj[uj].c=y1j;
}
}
if(xj==xr&&yr==yj)break;
po++;
}
g<<po-1<<" "<<xr<<" "<<yr;
return 0;
}