Cod sursa(job #486729)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 22 septembrie 2010 17:57:29
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb

#include<cstdio>

using namespace std;

#define nn 105

char di[]={-1,-1,0,1,1,1,0,-1},
    dj[]={0,1,1,1,0,-1,-1,-1};
int n,m,x,y,tmin;
short a[nn][nn],ci[nn*nn],cj[nn*nn];

void lee ()
{

    int st=1,dr=2;
    while(st<=dr){
        for(int k=0;k<8;++k){
        int ii=ci[st]+di[k],jj=cj[st]+dj[k];
        if(a[ii][jj]==1+a[ci[st]][cj[st]])
            x=ii,y=jj,st=dr+1,k=8;
        else
        if(a[ii][jj]==0&&ii>=0&&ii<n&&jj<m&&jj>=0){
            a[ii][jj]=a[ci[st]][cj[st]]+1;
            ++dr;
            ci[dr]=ii;
            cj[dr]=jj;
        }
        }
        ++st;
    }

}

int main ()
{

    freopen ("rj.in","r",stdin);
    freopen ("rj.out","w",stdout);
    scanf("%d %d",&n,&m);
    char crt;
    scanf("%c",&crt);
    while(crt!='\n')
        scanf("%c",&crt);
    for(int i=0;i<n;++i){
        for(int j=0;j<m;++j){
            scanf("%c",&crt);
            if(crt=='X')
                a[i][j]=-1;
            if(crt=='J')
                a[i][j]=1,ci[1]=i,cj[1]=j;
            if(crt=='R')
                a[i][j]=1,ci[2]=i,cj[2]=j;
        }
        while(crt!='\n'&&i<n)
            scanf("%c",&crt);
    }
    lee();

    printf("%d %d %d\n",a[x][y],x+1,y+1);

return 0;}