Cod sursa(job #81827)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 4 septembrie 2007 18:07:20
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <stdio.h>
#include <iostream.h>
//int comp(const void* a,const void* b){
//    return (*(long*)a-*(long*)b);
//}
    long n,m,i,j,x,y,xx,yy,k,ok;
    long xr,yr,p,q,mr[101][101],xj,yj;
    long xn[10001],yn[10001];
    long dx[]={0,-1,-1,-1,0,1,1,1,0};
    long dy[]={0,-1,0,1,1,1,0,-1,-1};

int main(){
    FILE *f1,*f2;
    f1=fopen("rj.in","r");
    f2=fopen("rj.out","w");
    char a[101][101];
    fscanf(f1,"%d %d",&n,&m);
    //fprintf(f2,"%d %d",n,m);
    fgets(a[i],101,f1);
    for (i=1;i<=n;i++){
        fgets(a[i],101,f1);
        for (j=0;j<m;j++){if (a[i][j]=='R'){xr=i;yr=j+1;}
                          if (a[i][j]=='J'){xj=i;yj=j+1;}
                         }   
    }
    //qsort(x,n,sizeof(long),comp);
    p=1;q=1;ok=0;
    mr[xr][yr]=1;
    xn[1]=xr;
    yn[1]=yr;
    while (p<=q&&ok==0){
          
          for (k=1;k<=8;k++){
              xx=xn[p]+dx[k];
              yy=yn[p]+dy[k];
              if (xx>=1&&xx<=n&&yy>=1&&yy<=m){
                 if(!mr[xx][yy]) if (a[xx][yy-1]!='X'){
                                   mr[xx][yy]=mr[xn[p]][yn[p]]+1;
                                   q++;xn[q]=xx;yn[q]=yy;
                                 }
                 if (a[xx][yy-1]=='J')ok=1;
                 
              }
          }
          p++;
    }
    for (i=1;i<=n;i++){
        for (j=1;j<=m;j++){
            fprintf(f2,"%d",mr[i][j]);
        }
        fprintf(f2,"\n");
    }
    return 0;
}