Pagini recente » Cod sursa (job #1204925) | Cod sursa (job #284337) | Istoria paginii runda/pushca_lui/clasament | Cod sursa (job #2074027) | Cod sursa (job #119554)
Cod sursa(job #119554)
#include<stdio.h>
long int m,n,i,j,xr,yr,xj,yj,xsol,ysol,R[102][102],J[102][102],prim,ultim,
cx[10405],cy[10405],cx1,cy1,tmin,ok,jj;
char a[102][102],caux;
int main()
{
FILE *f,*g;f=fopen("rj.in","r");g=fopen("rj.out","w");
fscanf(f,"%ld%ld",&n,&m);
for(i=0;i<=n+1;i++)
{ a[i][0]='X';a[i][m+1]='X';}
for(j=0;j<=m+1;j++)
{ a[0][j]='X';a[n+1][j]='X';}
fscanf(f,"%c",&caux);
for(i=1;i<=n;i++)
{ ok=1;
for(j=1;j<=m;j++)
{ fscanf(f,"%c",&a[i][j]);
if(a[i][j]=='R'){xr=i;yr=j;a[i][j]=' ';}
if(a[i][j]=='J'){xj=i;yj=j;a[i][j]=' ';}
if(a[i][j]!=' '&&a[i][j]!='X'){ok=0;break;}
R[i][j]=10405;J[i][j]=10405;
}
if(!ok)for(jj=j;j<=m;j++){a[i][j]=' ';R[i][j]=10405;J[i][j]=10405;}
else fscanf(f,"%c",&caux);
}
R[xr][yr]=1;
prim=1;ultim=1;cx[1]=xr;cy[1]=yr;
for(;prim<=ultim;prim++)
{ cx1=cx[prim];cy1=cy[prim];
if(a[cx1+1][cy1+1]==' ')if(R[cx1+1][cy1+1]>R[cx1][cy1]+1){R[cx1+1][cy1+1]=R[cx1][cy1]+1;ultim++;cx[ultim]=cx1+1;cy[ultim]=cy1+1;}
if(a[cx1+1][cy1-1]==' ')if(R[cx1+1][cy1-1]>R[cx1][cy1]+1){R[cx1+1][cy1-1]=R[cx1][cy1]+1;ultim++;cx[ultim]=cx1+1;cy[ultim]=cy1-1;}
if(a[cx1-1][cy1+1]==' ')if(R[cx1-1][cy1+1]>R[cx1][cy1]+1){R[cx1-1][cy1+1]=R[cx1][cy1]+1;ultim++;cx[ultim]=cx1-1;cy[ultim]=cy1+1;}
if(a[cx1-1][cy1-1]==' ')if(R[cx1-1][cy1-1]>R[cx1][cy1]+1){R[cx1-1][cy1-1]=R[cx1][cy1]+1;ultim++;cx[ultim]=cx1-1;cy[ultim]=cy1-1;}
if(a[cx1+1][cy1]==' ')if(R[cx1+1][cy1]>R[cx1][cy1]+1){R[cx1+1][cy1]=R[cx1][cy1]+1;ultim++;cx[ultim]=cx1+1;cy[ultim]=cy1;}
if(a[cx1-1][cy1]==' ')if(R[cx1-1][cy1]>R[cx1][cy1]+1){R[cx1-1][cy1]=R[cx1][cy1]+1;ultim++;cx[ultim]=cx1-1;cy[ultim]=cy1;}
if(a[cx1][cy1+1]==' ')if(R[cx1][cy1+1]>R[cx1][cy1]+1){R[cx1][cy1+1]=R[cx1][cy1]+1;ultim++;cx[ultim]=cx1;cy[ultim]=cy1+1;}
if(a[cx1][cy1-1]==' ')if(R[cx1][cy1-1]>R[cx1][cy1]+1){R[cx1][cy1-1]=R[cx1][cy1]+1;ultim++;cx[ultim]=cx1;cy[ultim]=cy1-1;}
}
J[xj][yj]=1;
prim=1;ultim=1;cx[1]=xj;cy[1]=yj;
for(;prim<=ultim;prim++)
{ cx1=cx[prim];cy1=cy[prim];
if(a[cx1+1][cy1+1]==' ')if(J[cx1+1][cy1+1]>J[cx1][cy1]+1){J[cx1+1][cy1+1]=J[cx1][cy1]+1;ultim++;cx[ultim]=cx1+1;cy[ultim]=cy1+1;}
if(a[cx1+1][cy1-1]==' ')if(J[cx1+1][cy1-1]>J[cx1][cy1]+1){J[cx1+1][cy1-1]=J[cx1][cy1]+1;ultim++;cx[ultim]=cx1+1;cy[ultim]=cy1-1;}
if(a[cx1-1][cy1+1]==' ')if(J[cx1-1][cy1+1]>J[cx1][cy1]+1){J[cx1-1][cy1+1]=J[cx1][cy1]+1;ultim++;cx[ultim]=cx1-1;cy[ultim]=cy1+1;}
if(a[cx1-1][cy1-1]==' ')if(J[cx1-1][cy1-1]>J[cx1][cy1]+1){J[cx1-1][cy1-1]=J[cx1][cy1]+1;ultim++;cx[ultim]=cx1-1;cy[ultim]=cy1-1;}
if(a[cx1+1][cy1]==' ')if(J[cx1+1][cy1]>J[cx1][cy1]+1){J[cx1+1][cy1]=J[cx1][cy1]+1;ultim++;cx[ultim]=cx1+1;cy[ultim]=cy1;}
if(a[cx1-1][cy1]==' ')if(J[cx1-1][cy1]>J[cx1][cy1]+1){J[cx1-1][cy1]=J[cx1][cy1]+1;ultim++;cx[ultim]=cx1-1;cy[ultim]=cy1;}
if(a[cx1][cy1+1]==' ')if(J[cx1][cy1+1]>J[cx1][cy1]+1){J[cx1][cy1+1]=J[cx1][cy1]+1;ultim++;cx[ultim]=cx1;cy[ultim]=cy1+1;}
if(a[cx1][cy1-1]==' ')if(J[cx1][cy1-1]>J[cx1][cy1]+1){J[cx1][cy1-1]=J[cx1][cy1]+1;ultim++;cx[ultim]=cx1;cy[ultim]=cy1-1;}
}
tmin=10405;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(R[i][j]==J[i][j])
if(R[i][j]!=10405)
if(R[i][j]<tmin)
{tmin=R[i][j];xsol=i;ysol=j;}
fprintf(g,"%ld %ld %ld\n",tmin,xsol,ysol);
fcloseall();
return 0;
}