Cod sursa(job #2979363)

Utilizator VespaOlaru Amelia Vespa Data 14 februarie 2023 23:15:46
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.09 kb
#include <fstream>
#include <queue>
#include <iostream>

using namespace std;
ifstream fin("rj.in");
int r[105][105],j[105][105],n,m;
int dx[]= {-1,-1,0,1,1,1,0,-1};
int dy[]= {0,1,1,1,0,-1,-1,-1};
int xr,yr,xj,yj;



void citire()
{
    char x[20];
    fin>>n>>m;
    fin.get();
    for(int i=0; i<n; i++)
    {
        fin.getline(x,19);
        for(int j=0; j<m; j++)
        {
            if(x[j]==' ')
                r[i][j]=0;
            else if(x[j]=='R')
            {
                xr=i;
                yr=j;
                r[i][j]=0;
            }
            else if(x[j]=='J')
            {
                xj=i;
                yj=j;
                r[i][j]=0;
            }
            else if(x[j]=='X')
                r[i][j]=-1;
        }
    }

    for(int i=0; i<n; i++)
        for(int jj=0; jj<m; jj++)
            j[i][jj]=r[i][jj];



}

void lee(int xs,int ys,int a[][105])
{
    queue<pair<int,int> > Q;
    a[xs][ys]=1;
    Q.push({xs,ys});
    while(!Q.empty())
    {
        pair<int,int>p=Q.front();
        Q.pop();
        for(int k=0; k<8; k++)
        {
            int x=p.first+dx[k],y=p.second+dy[k];
            if(x>=0&&x<n&&y>=0&&y<n&&a[x][y]==0)
            {
                Q.push({x,y});
                a[x][y]=a[p.first][p.second]+1;
            }
        }
    }
}
/*
void afish()
{
    for(int i=0; i<n; i++,fout<<'\n')
        for(int j=0; j<m; j++)
            fout<<r[i][j]<<" ";
    fout<<"___________"<<'\n';
    for(int i=0; i<n; i++,fout<<'\n')
        for(int jj=0; jj<m; jj++)
            fout<<j[i][jj]<<" ";
}
*/
void gasim()
{
    for(int i=0; i<n; i++)
    {
        for(int jj=0; jj<m; jj++)
        {
            if(r[i][jj]>0)
                if(r[i][jj]==j[i][jj])
                {
                    fout<<r[i][jj]<<" "<<i+1<<" "<<jj+1<<'\n';
                    return;
                }
        }
    }
}

int main()
{
    citire();
    lee(xr,yr,r);///pe mat r
    lee(xj,yj,j);///pe mat j
    //afish();
    gasim();///caut val comuna
    return 0;
}