Pagini recente » Cod sursa (job #2297043) | Cod sursa (job #2304262) | Cod sursa (job #394847) | Cod sursa (job #2149631) | Cod sursa (job #363095)
Cod sursa(job #363095)
#include<fstream.h>
struct nickq{int a,b;};
int m2[101][101],m3[101][101],m1[101][101];
int main()
{int j,i,leem=1,n,m,r1,r2,j1,j2;
char nr;
nickq lee[10001];
ifstream q("rj.in");
ofstream w("rj.out");
q>>n>>m;
q.get();
for(i=1;i<=n;i++)
{j=0;
nr=q.get();
while(nr!='\n')
{if(nr=='R')
{r1=i;
r2=j+1;
m1[i][j+1]=-2;}
if(nr=='J')
{j1=i;
j2=j+1;
m1[i][j+1]=-3;}
if(nr=='X')
m1[i][j+1]=-1;
if(nr==' ')
m1[i][j+1]=0;
j++;
nr=q.get();}}
lee[1].a=r1;
lee[1].b=r2;
int f;
for(f=1;f<=leem;f++)
{i=lee[f].a;
j=lee[f].b;
if(i>1&&(m1[i-1][j]==0||m1[i-1][j]==-3)&&(m2[i-1][j]==0||m2[i][j]<m2[i-1][j]))
{leem++;
lee[leem].a=i-1;
lee[leem].b=j;
m2[i-1][j]=m2[i][j]+1;}
if(i<n&&(m1[i+1][j]==0||m1[i+1][j]==-3)&&(m2[i+1][j]==0||m2[i][j]<m2[i+1][j]))
{leem++;
lee[leem].a=i+1;
lee[leem].b=j;
m2[i+1][j]=m2[i][j]+1;}
if(j>1&&(m1[i][j-1]==0||m1[i][j-1]==-3)&&(m2[i][j-1]==0||m2[i][j]<m2[i][j-1]))
{leem++;
lee[leem].a=i;
lee[leem].b=j-1;
m2[i][j-1]=m2[i][j]+1;}
if(j<n&&(m1[i][j+1]==0||m1[i][j+1]==-3)&&(m2[i][j+1]==0||m2[i][j]<m2[i][j+1]))
{leem++;
lee[leem].a=i;
lee[leem].b=j+1;
m2[i][j+1]=m2[i][j]+1;}}
lee[1].a=j1;
lee[1].b=j2;
leem=1;
for(f=1;f<=leem;f++)
{i=lee[f].a;
j=lee[f].b;
if(i>1&&(m1[i-1][j]>-1||m1[i-1][j]==-2)&&m1[i-1][j]==0&&(m3[i-1][j]==0||m3[i][j]<m3[i-1][j]))
{leem++;
lee[leem].a=i-1;
lee[leem].b=j;
m3[i-1][j]=m3[i][j]+1;}
if(i<n&&(m1[i+1][j]>-1||m1[i+1][j]==-2)&&m1[i+1][j]==0&&(m3[i+1][j]==0||m3[i][j]<m3[i+1][j]))
{leem++;
lee[leem].a=i+1;
lee[leem].b=j;
m3[i+1][j]=m3[i][j]+1;}
if(j>1&&(m1[i][j-1]>-1||m1[i][j-1]==-2)&&m1[i][j-1]==0&&(m3[i][j-1]==0||m3[i][j]<m3[i][j-1]))
{leem++;
lee[leem].a=i;
lee[leem].b=j-1;
m3[i][j-1]=m3[i][j]+1;}
if(j<n&&(m1[i][j+1]>-1||m1[i][j+1]==-2)&&m1[i][j+1]==0&&(m3[i][j+1]==0||m3[i][j]<m3[i][j+1]))
{leem++;
lee[leem].a=i;
lee[leem].b=j+1;
m3[i][j+1]=m3[i][j]+1;}}
int min=0;
int ni,nj;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(m2[i][j]>0&&m2[i][j]==m3[i][j]&&(min==0||min>m2[i][j]))
{min=m2[i][j];
ni=i;
nj=j;}
w<<min<<" "<<ni<<" "<<nj;
return 0;}