Cod sursa(job #971392)

Utilizator TarabanDragosTaraban Dragos-Petru TarabanDragos Data 9 iulie 2013 09:29:04
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.32 kb
#include<cstdio>
char x[101][101];
int t1,t,it,jt,m,n,i,j,ic,jc,iv,jv,c[2][20001],d,p,u,y[101][101],z[101][101],ir,jr,ij,jj;
int di[8]={1,1,0,-1,-1,-1, 0, 1};
int dj[8]={0,1,1, 1, 0,-1,-1,-1};
FILE *f,*g;
int main(){
    f=fopen("rj.in","r");
    g=fopen("rj.out","w");
    fscanf(f,"%d %d\n",&m,&n);
    for(i=1;i<=m;i++){
        fgets(x[i]+1, 120, f);
        for(j=1;j<=n;j++){
//            fscanf(f,"%c",&x[i][j]);
            if (x[i][j] == 'R'){
                ir = i;
                jr = j;
            }
            if (x[i][j] == 'J'){
                ij=i;
                jj=j;
            }
/*
            if (x[i][j]!='R' && x[i][j]!='J' && x[i][j]!='X')
                x[i][j]=' ';
*/
        }

    }
    u=1;
    p=1;
    c[0][u]=ir;
    c[1][u]=jr;
    y[ir][jr]=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(x[iv][jv]!='X' && iv>=1 && iv<=m
               && jv>=1 && jv<=n && y[iv][jv]==0){
               u++;
               c[0][u]=iv;
               c[1][u]=jv;
               y[iv][jv]=y[ic][jc]+1;
               t1=y[iv][jv];
            }
        }
        p++;
    }
    u=1;
    p=1;
    c[0][u]=ij;
    c[1][u]=jj;
    z[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(x[iv][jv]!='X' && iv>=1 && iv<=m
               && jv>=1 && jv<=n && z[iv][jv]==0){
               u++;
               c[0][u]=iv;
               c[1][u]=jv;
               z[iv][jv]=z[ic][jc]+1;
               t=z[iv][jv];
            }
        }
        p++;
    }
    t = 10001;
    for(i=1;i<=m;i++){
        for(j=1;j<=n;j++){
            if(y[i][j]==z[i][j] && y[i][j]<t && y[i][j]!=0){
                t=y[i][j];
                it=i;
                jt=j;
            }
        }
    }
/*
    for (i=1;i<=m;i++) {
        for (j=1;j<=n;j++)
            fprintf(g,"%d ",y[i][j]);
        fprintf(g,"\n");
    }

    fprintf(g,"\n");

    for (i=1;i<=m;i++) {
        for (j=1;j<=n;j++)
            fprintf(g,"%d ",z[i][j]);
        fprintf(g,"\n");
    }

*/
    fprintf(g,"%d %d %d\n",t,it,jt);
    fclose(f);
    fclose(g);
    return 0;
}