Pagini recente » Cod sursa (job #1147189) | Cod sursa (job #2821664) | Cod sursa (job #2272828) | Cod sursa (job #493564) | Cod sursa (job #1143630)
#include <fstream>
#include <string.h>
using namespace std;
int romeo[102][102],julieta[102][102];
char linie[105];
int main()
{int x1,y1,x,y,i,j,ur,uj,pr,pj,n,m,xr,xj,yr,yj,smin=9999,xf,yf;
struct poz {int l,c;};
int dl[8]={-1,-1,-1,0,1,1,1,0}, dc[8]={-1,0,1,1,1,0,-1,-1};
poz coadar[10000],coadaj[10000];
ifstream f("rj.in");
ofstream g("rj.out");
f>>n>>m;
for (j=0;j<=m+1;j++)
{romeo[0][j]=-1;
julieta[0][j]=-1;
}
for (i=0;i<=n+1;i++)
{romeo[i][0]=-1;
julieta[i][0]=-1;
}
for (i=0;i<=n+1;i++)
{romeo[i][m+1]=-1;
julieta[i][m+1]=-1;
}
for (j=0;j<=m+1;j++)
{romeo[n+1][j]=-1;
julieta[n+1][j]=-1;
}
for (i=0;i<=n;i++)
{f.getline(linie,103);
for (j=0;j<m;j++)
{if (*(linie+j)=='X')
{romeo[i][j+1]=-1;
julieta[i][j+1]=-1;
}
if (*(linie+j)=='R')
{xr=i;
yr=j+1;
}
if (*(linie+j)=='J')
{xj=i;
yj=j+1;
}
}
}
romeo[xr][yr]=1;
julieta[xj][yj]=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;
while (pr<=ur || pj<=uj)
{x=coadar[pr].l; y=coadar[pr].c;
pr++;
for (i=0;i<8;i++)
{x1=x+dl[i]; y1=y+dc[i];
if (romeo[x1][y1]==0)
{romeo[x1][y1]=romeo[x][y]+1;
ur++;
coadar[ur].l=x1; coadar[ur].c=y1;
}
}
x=coadaj[pj].l; y=coadaj[pj].c;
pj++;
for (i=0;i<8;i++)
{x1=x+dl[i]; y1=y+dc[i];
if (julieta[x1][y1]==0)
{julieta[x1][y1]=julieta[x][y]+1;
uj++;
coadaj[uj].l=x1; coadaj[uj].c=y1;
}
}
}
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (romeo[i][j]==julieta[i][j] && romeo[i][j]>0)
if (romeo[i][j]+julieta[i][j]<smin)
{smin=romeo[i][j]+julieta[i][j];
xf=i;
yf=j;
}
g<<romeo[xf][yf]<<" "<<xf<<" "<<yf;
return 0;
}