Cod sursa(job #1123512)

Utilizator VladutZ94FMI Chichirau Vlad Vasile VladutZ94 Data 26 februarie 2014 08:52:57
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.86 kb
#include <cstdio>

using namespace std;

struct JARAXXUS
{
    int l,c;
} v[16384];


int a[128][128],n,m,i,j,x,y,psl,psc,pfl,pfc,pi,pf;
char c;

void citire()
{
    freopen("rj.in","r",stdin);
    freopen("rj.out","w",stdout);
    scanf("%d %d",&n,&m);
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            {
                scanf("%c",&c);
                if(c=='R')
                {
                    psl=i;
                    psc=j;
                    a[i][j]=0;
                }
                if(c=='J')
                {
                    pfl=i;
                    pfc=j;
                    a[i][j]=0;
                }

                if(c=='X')
                    a[i][j]=-1;
                if(c==' ')
                    a[i][j]=0;
            }
}

void lee()
{
    v[1].l=psl;
    v[1].c=psc;
    pi=1;
    pf=1;
    while(pi<=pf)
    {
        x=v[pi].l;
        y=v[pf].c;
        if(x<n && a[x+1][y]!=-1)
        {
            pf++;
            v[pf].l=x+1;
            v[pf].c=y;
            a[x+1][y]=a[x][y]+1;
            if(x+1==pfl && y==pfc) break;
        }

        if(y<n && a[x][y+1]!=-1)
        {
            pf++;
            v[pf].l=x;
            v[pf].c=y+1;
            a[x][y+1]=a[x][y]+1;
            if(x==pfl && y+1==pfc) break;
        }

        if(x>1 && a[x-1][y]!=-1)
        {
            pf++;
            v[pf].l=x-1;
            v[pf].c=y;
            a[x-1][y]=a[x][y]+1;
            if(x-1==pfl && y==pfc) break;
        }

        if(y>1 && a[x][y-1]!=-1)
        {
            pf++;
            v[pf].l=x;
            v[pf].c=y-1;
            a[x][y-1]=a[x][y]+1;
            if(x==pfl && y-1==pfc) break;
        }
        pi++;

    }
}
int main()
{
    citire();
    lee();
    printf("%d %d %d\n",a[pfl][pfc],pfl,pfc);
    return 0;
}