Cod sursa(job #2495549)

Utilizator georgecristian2002Raducanu George-Cristian georgecristian2002 Data 19 noiembrie 2019 17:03:30
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.09 kb
#include <iostream>
#include <cstdio>
#include<fstream>
using namespace std;
short int a[105][105],ql[10005],qc[10005],dc[8]={1,1,1,0,0,-1,-1,-1},dl[8]={1,-1,0,1,-1,1,-1,0};
short int a2[105][105];
ifstream f("rj.in");
ofstream g("rj.out");
int main()
{
    short int n,m,i,j,xR,yR,xJ,yJ,first,last,l,c,k,xf=100*100+69,yf=100*100+69,t=100*100+69;
    char b;
    f>>n>>m;
    b=getchar();
    for(i=0;i<=n+1;i++)
        a[i][0]=a[i][m+1]=a2[i][0]=a2[i][m+1]=-1;
    for(j=0;j<=m+1;j++)
        a[0][j]=a[n+1][j]=a2[0][j]=a2[n+1][j]=-1;
    for(i=1;i<=n;i++)
    {
        b=getchar();
        for(j=1;b!='\n';j++)
        {
            if(b=='R')
            {
                xR=i;
                yR=j;
            }
            if(b=='J')
            {
                xJ=i;
                yJ=j;
            }
            if(b=='X')
                a[i][j]=a2[i][j]=-1;
            b=getchar();
        }
    }
    first=last=1;
    ql[1]=xR;
    qc[1]=yR;
    a[xR][yR]=1;
    while(first<=last)
    {
        l=ql[first];
        c=qc[first];
        for(k=0;k<=7;k++)
            if(a[l+dl[k]][c+dc[k]]==0)
            {
                a[l+dl[k]][c+dc[k]]=a[l][c]+1;
                last++;
                ql[last]=l+dl[k];
                qc[last]=c+dc[k];
            }
        first++;
    }
    first=last=1;
    ql[first]=xJ;
    qc[first]=yJ;
    a2[xJ][yJ]=1;
    while(first<=last)
    {
        l=ql[first];
        c=qc[first];
        for(k=0;k<=7;k++)
            if(a2[l+dl[k]][c+dc[k]]==0)
            {
                a2[l+dl[k]][c+dc[k]]=a2[l][c]+1;
                last++;
                ql[last]=l+dl[k];
                qc[last]=c+dc[k];
            }
        first++;
    }
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            if(a[i][j]==a2[i][j] && a[i][j]>0)
                if(t>a[i][j] || (t==a[i][j] && i<xf) || (t==a[i][j] && i==xf && j<yf))
                {
                    xf=i;
                    yf=j;
                    t=a[i][j];
                }
    g<<t<<" "<<xf<<" "<<yf;
    return 0;
}