Cod sursa(job #288847)

Utilizator Addy.Adrian Draghici Addy. Data 26 martie 2009 10:04:27
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.88 kb
#include<stdio.h>
#define DIM 52
int t,tmin,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");
tmin=10002;
fscanf(f,"%d%d\n",&n,&m);
  for(i=1;i<=n;i++){
//    fgets(s,m,f);
//    puts("*");puts(s);puts("*");
//     printf("*%c*",s[m-1]);
    int endline = 0;
    for(j=1;j<=m;j++){

      fscanf(f,"%c",&a[i][j]);
      if (a[i][j]=='\n') {
	endline = 1;
	a[i][j] = ' ';
      }
//      a[i][j] = s[j-1];
//      a[i][j]
      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;

    }
    if (!endline)
      fscanf(f,"\n");
  }

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){
       x=i;
       y=j;
       t=Ro[i][j];

     }

  fprintf(g,"%d %d %d",t,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;
}