Pagini recente » Cod sursa (job #1707132) | Cod sursa (job #900195) | Cod sursa (job #632530) | Cod sursa (job #588688) | Cod sursa (job #119580)
Cod sursa(job #119580)
#include<stdio.h>
int m,n,i,k,xr,yr,xj,yj,xsol,ysol,r[102][102],j[102][102],prim,ultim,
cx[10405],cy[10405],cx1,cy1,tmin,ok,jj,tr,tj;
char a[102][102],caux;
int main()
{
FILE *f,*g;f=fopen("rj.in","r");g=fopen("rj.out","w");
fscanf(f,"%d%d",&n,&m);
for(i=0;i<=n+1;i++)
{ a[i][0]='X';a[i][m+1]='X';}
for(k=0;k<=m+1;k++)
{ a[0][k]='X';a[n+1][k]='X';}
fscanf(f,"%c",&caux);
for(i=1;i<=n;i++)
{ ok=1;
for(k=1;k<=m;k++)
{ fscanf(f,"%c",&a[i][k]);
if(a[i][k]=='R'){xr=i;yr=k;a[i][k]=' ';}
if(a[i][k]=='J'){xj=i;yj=k;a[i][k]=' ';}
if(a[i][k]!=' '&&a[i][k]!='X'){ok=0;break;}
r[i][k]=-1;j[i][k]=-1;
}
if(!ok)for(jj=k;jj<=m;jj++){a[i][jj]=' ';r[i][jj]=-1;j[i][jj]=-1;}
else fscanf(f,"%c",&caux);
}
r[xr][yr]=0;
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]==-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]==-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]==-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]==-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]==-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]==-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]==-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]==-1) {r[cx1][cy1-1]=r[cx1][cy1]+1; ultim++;cx[ultim]=cx1; cy[ultim]=cy1-1;}
}
j[xj][yj]=0;
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]==-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]==-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]==-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]==-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]==-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]==-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]==-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]==-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(k=1;k<=m;k++)
{ tr=r[i][k];
tj=j[i][k];
if(tr==tj)
if(tr!=-1)
if(tr<tmin)
{tmin=tr;
xsol=i;
ysol=k;
}
}
}
fprintf(g,"%d %d %d\n",tmin,xsol,ysol);
fcloseall();
return 0;
}