Cod sursa(job #2585177)

Utilizator VerestiucAndreiVerestiuc Andrei VerestiucAndrei Data 18 martie 2020 18:46:41
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.43 kb
#include <fstream>
#define dim 105
using namespace std;
ifstream fin ("rj.in");
ofstream fout ("rj.out");
int nrLinii,nrColoane;
int i,j;
int linR,colR;
int linJ,colJ;
int minim;
int xMin=-1,yMin=-1;
char ch;
char mat[dim][dim];
int romeo[dim][dim];
int julieta[dim][dim];
void Lee(int xp,int yp,int v[dim][dim]);
int main()
{
    fin>>nrLinii>>nrColoane;
    for (i=0; i<=nrColoane+1; i++)
        mat[0][i]=mat[nrLinii+1][i]='X';
    for (i=0; i<=nrLinii+1; i++)
        mat[i][0]=mat[i][nrColoane+1]='X';
    fin.get();
    for (i=1; i<=nrLinii; i++)
        {
        fin.getline(mat[i],102);
        for (j=nrColoane; j>=1; j--)
            {
            mat[i][j]=mat[i][j-1];
            if (mat[i][j]=='R')
                {
                mat[i][j]==' ';
                linR=i;
                colR=j;
                }
            if (mat[i][j]=='J')
                {
                mat[i][j]==' ';
                linJ=i;
                colJ=j;
                }
            }
        }
    Lee(linR,colR,romeo);
    Lee(linJ,colJ,julieta);
    minim=dim*dim+10;
    for (i=1; i<=nrLinii; i++)
        {
        for (j=1; j<=nrColoane; j++)
            {
            //fout<<i<<' '<<j<<' '<<romeo[i][j]<<' '<<julieta[i][j]<<'\n';
            if (romeo[i][j]==julieta[i][j])
                if (romeo[i][j]<minim && romeo[i][j]!=-1)
                    {
                    minim=romeo[i][j];
                    xMin=i;
                    yMin=j;
                    }
            }
        }
    fout<<minim<<' '<<xMin<<' '<<yMin;
    return 0;
}
void Lee(int xp,int yp,int v[dim][dim])
{
    struct coada
    {
        int lin,col;
    };
    coada co[dim*dim],x;
    int dl[10]={-1,-1,-1,0,1,1,1,0};
    int dc[10]={-1,0,1,1,1,0,-1,-1};
    int inc,sf;
    int l9,c9;
    int i,j;
    int k;
    for (i=0; i<=nrLinii+1; i++)
        for (j=0; j<=nrColoane+1; j++)
            v[i][j]=-1;
    sf=1;
    co[sf].lin=xp;
    co[sf].col=yp;
    v[xp][yp]=1;
    inc=1;
    while (inc<=sf)
        {
        x=co[inc];
        inc++;
        for (k=0; k<8; k++)
            {
            l9=x.lin+dl[k];
            c9=x.col+dc[k];
            if (mat[l9][c9]==' ' && v[l9][c9]==-1)
                {
                v[l9][c9]=v[x.lin][x.col]+1;
                sf++;
                co[sf].lin=l9;
                co[sf].col=c9;
                }
            }
        }
}