Cod sursa(job #2905446)

Utilizator eduardbuchmaneduardbuchman eduardbuchman Data 21 mai 2022 17:19:13
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.62 kb
#include <fstream>
#include <cstring>;
using namespace std;
struct ura
{
    int l,c;
};
ura coada[10003];
int dirL[8]={-1,-1,0,1,1,1,0,-1};
int dirC[8]={0,1,1,1,0,-1,-1,-1};
int rom[103][103],jul[103][103];
int main()
{
    ifstream in("rj.in");
    ofstream out("rj.out");
    int n,m,i,j,ir,jr,ij,jj,sf,inc,lin,col,minn=100000,k;
    char y[103][103];
    in>>n>>m;
    for(i=0;i<=m+1;i++)
    {
        rom[0][i]=-1;
        rom[n+1][i]=-1;
        jul[0][i]=-1;
        jul[n+1][i]=-1;
    }
    for(i=0;i<=m+1;i++)
    {
        rom[i][0]=-1;
        rom[i][m+1]=-1;
        jul[i][0]=-1;
        jul[i][m+1]=-1;
    }
    in.get();
    for(i=1;i<=n;i++)
    {
        in.get(y[i],101);
        in.get();
    }
    for(i=1;i<=n;i++)
    {
        k=strlen(y[i]);
        for(j=1;j<=k;j++)
        {
            if(y[i][j-1]=='R')
            {
                ir=i;
                jr=j;
            }
            if(y[i][j-1]=='J')
            {
                ij=i;
                jj=j;
            }
            if(y[i][j-1]=='X')
            {
                rom[i][j]=-1;
                jul[i][j]=-1;
            }
        }
    }
    sf=inc=1;
    coada[1].l=ir;
    coada[1].c=jr;
    rom[ir][jr]=1;
    while(inc<=sf)
    {
        for(i=0;i<8;i++)
        {
            lin=coada[inc].l+dirL[i];
            col=coada[inc].c+dirC[i];
            if(rom[lin][col]==0)
            {
                sf++;
                coada[sf].l=lin;
                coada[sf].c=col;
                rom[lin][col]=rom[coada[inc].l][coada[inc].c]+1;
            }
        }
        inc++;
    }
    sf=inc=1;
    coada[1].l=ij;
    coada[1].c=jj;
    jul[ij][jj]=1;
    while(inc<=sf)
    {
        for(i=0;i<8;i++)
        {
            lin=coada[inc].l+dirL[i];
            col=coada[inc].c+dirC[i];
            if(jul[lin][col]==0)
            {
                sf++;
                coada[sf].l=lin;
                coada[sf].c=col;
                jul[lin][col]=jul[coada[inc].l][coada[inc].c]+1;
            }
        }
        inc++;
    }
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            if(rom[i][j]==jul[i][j]&&rom[i][j]==minn&&rom[i][j]>0)
            {
                if(col>j)
                {
                    col=j;
                    lin=i;
                }
            }
            if(rom[i][j]==jul[i][j]&&rom[i][j]<minn&&rom[i][j]>0)
            {
                minn=rom[i][j];
                lin=i;
                col=j;
            }
        }
    }
    out<<minn<<" "<<lin<<" "<<col;
    return 0;
}