Cod sursa(job #414224)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 9 martie 2010 20:45:19
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.62 kb
#include<stdio.h>
FILE*f=fopen("rj.in","r");
FILE*g=fopen("rj.out","w");
int r[101][101],j[101][101],n,m,ii,ir,jr,ij,jj,jv,iv,d,u,p,x,i,jc,ic;
int c[2][101];
char a[101][101];
int di[]={0,0,-1,1,-1,1,-1,1};
int dj[]={1,-1,0,0,1,-1,-1,1};
int min,imin,jmin;
int main () {
	fscanf(f,"%d%d\n",&n,&m);
	for(i=1;i<=n;i++){
		for(ii=1;ii<=m;ii++){
			fscanf(f,"%c",&a[i][ii]);
			if(a[i][ii]=='R'){
				ir=i;
				jr=ii;
			}
			if(a[i][ii]=='J'){
				ij=i;
				jj=ii;
			}
		}
		fscanf(f,"%c",&x);
	}

	r[ir][jr]=1;
	c[0][1]=ir;
	c[1][1]=jr;
	p=u=1;
	while(p<=u){
		ic=c[0][p];
		jc=c[1][p];
		for(d=0;d<=7;d++){
			iv=ic+di[d];
			jv=jc+dj[d];
			if(iv>=1&&iv<=n&&jv>=1&&jv<=m&&a[iv][jv]!='X'&&r[iv][jv]==0){
				u++;
				c[0][u]=iv;
				c[1][u]=jv;
				r[iv][jv]=r[ic][jc]+1;
			}
		}
		p++;
	}
	j[ij][jj]=1;
	/*for(i=1;i<=n;i++){
		for(ii=1;ii<=m;ii++)
			fprintf(g,"%d ",r[i][ii]);
		fprintf(g,"\n");
	}
	*/
	c[0][1]=ij;
	c[1][1]=jj;
	ic=jc=1;
	p=u=1;
	j[ij][jj]=1;
	while(p<=u){
		ic=c[0][p];
		jc=c[1][p];
		for(d=0;d<=7;d++){
			iv=ic+di[d];
			jv=jc+dj[d];
			if(iv>=1&&jv>=1&&iv<=n&&jv<=m&&a[iv][jv]!='X'&&j[iv][jv]==0){
				u++;
				c[0][u]=iv;
				c[1][u]=jv;
				j[iv][jv]=j[ic][jc]+1;
			}
		}
		p++;
	}
	//fprintf(g,"\n\n");
	/*for(i=1;i<=n;i++){
		for(ii=1;ii<=m;ii++)
			fprintf(g,"%d ",j[i][ii]);
		fprintf(g,"\n");
	}
	*/
	min=1000000;
	for(i=1;i<=n;i++){
		for(ii=1;ii<=m;ii++){
			if(r[i][ii]==j[i][ii]&&r[i][ii]<min&&r[i][ii]!=0){
				min=r[i][ii];
				imin=i;
				jmin=ii;
			}
		}
	}
	fprintf(g,"%d %d %d",min,imin,jmin);
	fclose(g);
	return 0;
}