Cod sursa(job #2337620)

Utilizator PopescuLucianPopescu Lucian PopescuLucian Data 6 februarie 2019 16:19:01
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.05 kb
#include<fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int a[200][200],b[200][200],n,m,i,j,c[11000],d[11000],q,z,l,inR,sfR,inJ,sfJ,xmin,ymin,tmin;
int x[]={-1,-1,0,1,1,1,0,-1};
int y[]={0,1,1,1,0,-1,-1,-1};
int main()
{
     char ch;
    fin>>n>>m;
    fin.get();
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            fin.get(ch);
            if(ch=='R')
            {
                inR=i;
                sfR=j;
            }
            else if(ch=='J')
            {
                inJ=i;
                sfJ=j;
            }
            else
            if(ch==' ')
             a[i][j]=b[i][j]=0;
            else
            if(ch=='X')
             a[i][j]=b[i][j]=-1;
        }
        fin.get();
    }

      for(i=0;i<=n+1;i++)
    {

        a[0][i]=-1;
        a[n+1][i]=-1;
        a[i][0]=-1;
        a[i][n+1]=-1;
        b[0][i]=-1;
        b[n+1][i]=-1;
        b[i][0]=-1;
        b[i][n+1]=-1;
    }
    l=1;
    c[l]=inR;
    d[l]=sfR;
    i=1;
    a[inJ][sfJ]=0;
    a[inR][sfR]=1;
    while(a[inJ][sfJ]==0&&i<=l)
    {
        q=c[i];
        z=d[i];
        for(j=0;j<=7;j++)
        if(a[q+x[j]][z+y[j]]==0)
        {
            l++;
            c[l]=q+x[j];
            d[l]=z+y[j];
            a[q+x[j]][z+y[j]]=a[q][z]+1;
        }
        i++;
    }

    l=1;
    c[l]=inJ;
    d[l]=sfJ;
    i=1;
    b[inJ][sfJ]=1;
    b[inR][sfR]=0;
    while(b[inR][sfR]==0&&i<=l)
    {
        q=c[i];
        z=d[i];
        for(j=0;j<=7;j++)
        if(b[q+x[j]][z+y[j]]==0)
        {
            l++;
            c[l]=q+x[j];
            d[l]=z+y[j];
            b[q+x[j]][z+y[j]]=b[q][z]+1;
        }
        i++;
    }
    tmin=101*101;
    xmin=ymin=0;

    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        if(a[i][j]==b[i][j] && a[i][j]<tmin && a[i][j]>0)
        {
            tmin=a[i][j];
            xmin=i;
            ymin=j;
        }
    fout<<tmin<<" "<<xmin<<" "<<ymin;
    return 0;
}