Cod sursa(job #386276)

Utilizator monkTemian Vlad monk Data 24 ianuarie 2010 15:23:14
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.97 kb
/*
       Nume:Temian Vlad
       Problema:
       Date:
*/
#include <stdio.h>
struct alee{
    short x,y;    
}coada[30000];
FILE *f,*o;
int a[100][100],sc,ic;
int main()
{
    f=fopen("rj.in","r");
    o=fopen("rj.out","w");
    int n,x,y,m,i,j,e;
    char linie[200];
    fscanf(f,"%d %d\n",&n,&m);
    a[0][0]=-1;
    for(i=1;i<=n;i++){
        fgets(linie,200,f);
        a[i][0]=-1;
        a[i][n+1]=-1;
        for(j=1;j<=m;j++){
            if(a[0][j]!=-1&&a[n+1][j]!=-1){a[0][j]=-1;a[n+1][j]=-1;}
            if(linie[j-1]=='X')a[i][j]=-1;
            else
            if(linie[j-1]=='J'||linie[j-1]=='R'){;a[i][j]=1;ic++;coada[ic].x=i;coada[ic].y=j;}    
            
        }
    }
    
    sc=ic;ic=1;
    while(ic<=sc){
        x=coada[ic].x;
        y=coada[ic].y;
        if(a[x][y+1]==0&&a[x][y]>0){sc++;coada[sc].x=x;coada[sc].y=y+1;a[x][y+1]=a[x][y]+1;}
        else
        if(a[x][y+1]==a[x][y]+1){fprintf(o,"%d %d %d",a[x][y]+1,x,y+1);break;}
        if(a[x][y-1]==0&&a[x][y]>0){sc++;coada[sc].x=x;coada[sc].y=y-1;a[x][y-1]=a[x][y]+1;}
        else
        if(a[x][y-1]==a[x][y]+1){fprintf(o,"%d %d %d",a[x][y]+1,x,y-1);break;}
        if(a[x+1][y]==0&&a[x][y]>0){sc++;coada[sc].x=x+1;coada[sc].y=y;a[x+1][y]=a[x][y]+1;}
        else    
        if(a[x+1][y]==a[x][y]+1){fprintf(o,"%d %d %d",a[x][y]+1,x+1,y);break;}
        if(a[x-1][y]==0&&a[x][y]>0){sc++;coada[sc].x=x-1;coada[sc].y=y;a[x-1][y]=a[x][y]+1;}
        else
        if(a[x-1][y]==a[x][y]+1){fprintf(o,"%d %d %d",a[x][y]+1,x-1,y);break;}
        if(a[x+1][y+1]==0&&a[x][y]>0){sc++;coada[sc].x=x+1;coada[sc].y=y+1;a[x+1][y+1]=a[x][y]+1;}
        else
        if(a[x+1][y+1]==a[x][y]+1){fprintf(o,"%d %d %d",a[x][y]+1,x+1,y+1);break;}
        if(a[x-1][y-1]==0&&a[x][y]>0){sc++;coada[sc].x=x-1;coada[sc].y=y-1;a[x-1][y-1]=a[x][y]+1;}
        else
        if(a[x-1][y-1]==a[x][y]+1){fprintf(o,"%d %d %d",a[x][y]+1,x-1,y-1);break;}
        ic++;    
    }
    return 0;
}