Cod sursa(job #288931)

Utilizator n3msizN3msiz n3msiz Data 26 martie 2009 11:17:01
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.67 kb
#include<stdio.h>
#define DIM 102
int t,min,x,y,a[DIM][DIM],Ro[DIM][DIM],Ju[DIM][DIM],n,i,j,p,u,m,ic,jc,iv,jv,iR,jR,iJ,jJ,k;
int di[8]={-1,1,0,0,-1,1,-1,1};
int dj[8]={0,0,-1,1,-1,-1,1,1};
int C[2][DIM*DIM];
char s[DIM];

int main(){
FILE*f=fopen("rj.in","r");
FILE*g=fopen("rj.out","w");
min=10002;
fscanf(f,"%d%d\n",&n,&m);

for (i=1;i<=n;i++) {
	for (j=1;j<=m;j++) {
//		a[i][j] = s[j-1];
		a[i][j] = fgetc(f);
		if(a[i][j]=='R'){
			iR=i;
			jR=j;
		}
		if(a[i][j]=='J'){
			iJ=i;
			jJ=j;
		}
		if(a[i][j]==' ')
			a[i][j]=0;
		if(a[i][j]=='X')
			a[i][j]=Ro[i][j]=Ju[i][j]=-1;
	}
	fgetc(f);
}
	for (i=0;i<=n+1;i++) {
		Ro[i][m+1]= Ro[i][0]=Ju[i][m+1]= Ju[i][0]=-1;
	}
	for(j=0;j<=m+1;j++)
		Ro[0][j]= Ro[n+1][j]=Ju[0][j]= Ju[n+1][j]=-1;


	p=1;
	u=1;
	C[0][u]=iR;
	C[1][u]=jR;
	Ro[iR][jR]=1;
	
	for(;p<=u;p++){
		ic = C[0][p];
		jc = C[1][p];
		for(k=0;k<=7;k++){
			iv=ic+di[k];
			jv=jc+dj[k];
			if(Ro[iv][jv]==0){
				u++;
				C[0][u]=iv;
				C[1][u]=jv;
				Ro[iv][jv]=Ro[ic][jc]+1;
			}
		}
	}


	p=1;
	u=1;
	C[0][u]=iJ;
	C[1][u]=jJ;
	Ju[iJ][jJ]=1;

	for(;p<=u;p++){
		ic = C[0][p];
		jc = C[1][p];
		for(k=0;k<=7;k++){
			iv=ic+di[k];
			jv=jc+dj[k];
			if(Ju[iv][jv]==0){
				u++;
				C[0][u]=iv;
				C[1][u]=jv;
				Ju[iv][jv]=Ju[ic][jc]+1;
		
		
			}
		}
	
	}

for (i=1;i<=n;i++)
  for(j=1;j<=m;j++)
    if(Ro[i][j]==Ju[i][j]&&Ro[i][j]!=-1&&Ro[i][j]!=0&&Ro[i][j]<min){
       x=i;
       y=j;
       min=Ro[i][j];

     }

  fprintf(g,"%d %d %d",min,x,y);
/* for(i=1;i<=n;i++){
   for(j=1;j<=m;j++)
    fprintf(g,"%d ",Ju[i][j]);
   fprintf(g,"\n");
 } */

fclose(f);
fclose(g);
return 0;
}