Cod sursa(job #1681437)

Utilizator WladDalwMvladutu cristian vlad WladDalwM Data 9 aprilie 2016 14:15:34
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.64 kb
#include<cstdio>
using namespace std;
struct aa{int l,c;};
aa coada[10002],coada2[10002];
int r[102][102],ju[102][102],dx[]={0,0,-1,-1,-1,1,1,1},dy[]={1,-1,0,1,-1,0,1,-1};
int main ()
{
    int n,m,i,j,lin,col;
    char x;
    freopen("rj.in","r",stdin);
    freopen("rj.out","w",stdout);
    scanf("%d%d%c",&n,&m,&x);
    for(i=1;i<=n;i++)
        {
            for(j=1;j<=m;j++)
                {
                    scanf("%c",&x);
                    if(x=='R')r[i][j]=1,coada[1].l=i,coada[1].c=j;
                    if(x=='J')ju[i][j]=1,lin=i,col=j;
                    if(x!='X'&&x!='R'&&x!='J')r[i][j]=-1,ju[i][j]=-1;
                }
            scanf("%c",&x);
        }
    int u=1,p=1,l,c;
    while(p<=u)
    {
        l=coada[p].l;
        c=coada[p].c;
        p++;
        for(i=0;i<=7;i++)
            if(r[l+dx[i]][c+dy[i]]==-1)
            {
                u++;
                coada[u].l=l+dx[i];
                coada[u].c=c+dy[i];
                r[coada[u].l][coada[u].c]=r[l][c]+1;
            }
    }
    p=1;u=1;
    coada[1].l=lin;
    coada[1].c=col;
    while(p<=u)
    {
        l=coada[p].l;
        c=coada[p].c;
        p++;
        for(i=0;i<=7;i++)
            if(ju[l+dx[i]][c+dy[i]]==-1)
            {
                u++;
                coada[u].l=l+dx[i];
                coada[u].c=c+dy[i];
                ju[coada[u].l][coada[u].c]=ju[l][c]+1;
            }
    }
    int min=2000000000;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            if(r[i][j]==ju[i][j]&&r[i][j]<min&&r[i][j]>0)min=r[i][j],lin=i,col=j;
        printf("%d %d %d",min,lin,col);
    return 0;
}