Cod sursa(job #2627711)

Utilizator CleliaClelia Maria Dobrescu Clelia Data 12 iunie 2020 04:49:02
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.04 kb
#include <fstream>
using namespace std;
ifstream fin ("rj.in");
ofstream fout ("rj.out");
struct ura
{
    int x,y;
};
ura q[11026];
char s[105];
int a[105][105],b[105][105],vL[8]={-1,-1,0,1,1,1,0,-1},vC[8]={0,1,1,1,0,-1,-1,-1};
int main ()
{
    int n,m,i,j,mini=11026,st,dr,l,c;
    ura romeo,julieta,poz;
    fin>>n>>m;
    for (i=0;i<=n+1;i++)
        a[i][0]=a[i][m+1]=b[i][0]=b[i][m+1]=-1;
    for (j=0;j<=m+1;j++)
        a[0][j]=a[n+1][j]=b[0][j]=b[n+1][j]=-1;
    for (i=1;i<=n;i++)
    {
        fin.get();
        fin.get(s,105);
        for (j=1;j<=m;j++)
        {
            if (s[j-1]=='X')
                a[i][j]=b[i][j]=-1;
            if (s[j-1]=='R')
            {
                a[i][j]=1;
                romeo.x=i;
                romeo.y=j;
            }
            else
                if (s[j-1]=='J')
                {
                    b[i][j]=1;
                    julieta.x=i;
                    julieta.y=j;
                }
        }
    }
    q[1]=romeo;
    st=dr=1;
    while (st<=dr)
    {
        poz=q[st];
        for (i=0;i<8;i++)
            if (a[poz.x+vL[i]][poz.y+vC[i]]==0)
            {
                dr++;
                q[dr].x=poz.x+vL[i];
                q[dr].y=poz.y+vC[i];
                a[q[dr].x][q[dr].y]=a[poz.x][poz.y]+1;
            }
        st++;
    }
    q[1]=julieta;
    st=dr=1;
    while (st<=dr)
    {
        poz=q[st];
        for (i=0;i<8;i++)
            if (b[poz.x+vL[i]][poz.y+vC[i]]==0)
            {
                dr++;
                q[dr].x=poz.x+vL[i];
                q[dr].y=poz.y+vC[i];
                b[q[dr].x][q[dr].y]=b[poz.x][poz.y]+1;
            }
        st++;
    }
    for (i=1;i<=n;i++)
        for (j=1;j<=m;j++)
            if (a[i][j]==b[i][j] && a[i][j]>0)
            {
                if (a[i][j]<mini)
                {
                    mini=a[i][j];
                    l=i;
                    c=j;
                }
            }
    fout<<mini<<" "<<l<<" "<<c;
    return 0;
}