Cod sursa(job #2503297)

Utilizator STEFAN18Miclaus Stefan STEFAN18 Data 2 decembrie 2019 20:30:22
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 3.01 kb
#include <stdio.h>

using namespace std;

int a[102][102];
int b[102][102];
int dirl[8]={-1,-1,0,1,1,1,0,-1},dirc[8]={0,1,1,1,0,-1,-1,-1};

struct numadoarecapu{int l,c;};
numadoarecapu coada[10404];

int main()
{
    freopen("rj.in","r",stdin);
    freopen("rj.out","w",stdout);
    int n,m,i,j,lpr,cpr,lpj,cpj,inc,sf,lin,col,min=10404;
    char c;
    scanf("%d %d\n",&n,&m);
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            scanf("%c",&c);
            if(c==' ')
            {
                a[i][j]=b[i][j]=0;
            }
            else
            {
                if(c=='X')
                {
                    a[i][j]=b[i][j]=-1;
                }
                else
                {
                    if(c=='R')
                    {
                        lpr=i;
                        cpr=j;
                    }
                    else
                    {
                        if(c=='J')
                        {
                            lpj=i;
                            cpj=j;
                        }
                        else
                        {
                            //a[i][j]=b[i][j]=-1;
                        }
                    }
                }
            }
        }
        scanf("\n");
    }
    //BORDARE------------------------------------------------
    for(i=0;i<=n+1;i++)
    {
        a[i][m+1]=b[i][m+1]=-1;
        a[i][0]=b[i][0]=-1;
    }
    for(j=0;j<=m+1;j++)
    {
        a[0][j]=b[0][j]=-1;
        a[n+1][j]=b[n+1][j]=-1;
    }
    //LEE ROMEO----------------------------------------------
    a[lpr][cpr]=1;
    inc=sf=1;
    coada[inc].l=lpr;
    coada[inc].c=cpr;
    while(inc<=sf)
    {
        for(i=0;i<8;i++)
        {
            lin=coada[inc].l+dirl[i];
            col=coada[inc].c+dirc[i];
            if(a[lin][col]==0)
            {
                sf++;
                coada[sf].l=lin;
                coada[sf].c=col;
                a[lin][col]=1+a[coada[inc].l][coada[inc].c];
            }
        }
        inc++;
    }
    //LEE JULIETA--------------------------------------------
    b[lpj][cpj]=1;
    inc=sf=1;
    coada[inc].l=lpj;
    coada[inc].c=cpj;
    while(inc<=sf)
    {
        for(i=0;i<8;i++)
        {
            lin=coada[inc].l+dirl[i];
            col=coada[inc].c+dirc[i];
            if(b[lin][col]==0)
            {
                sf++;
                coada[sf].l=lin;
                coada[sf].c=col;
                b[lin][col]=1+b[coada[inc].l][coada[inc].c];
            }
        }
        inc++;
    }
    //-------------------------------------------------------
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            if(a[i][j]==b[i][j] && a[i][j]<min && a[i][j]!=-1 && a[i][j]!=0)
            {
                min=a[i][j];
                lin=i;
                col=j;
            }
        }
    }
    printf("%d %d %d",min,lin,col);


    return 0;
}