Cod sursa(job #3153556)

Utilizator daria_staminStamin Daria Alexandra daria_stamin Data 30 septembrie 2023 11:18:16
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.19 kb
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,matRomeo[105][105], matJulieta[105][105];
int dir[8][2]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}};
struct coord{
    int lin, col;
};
coord rom,jul;
queue <coord> q;
bool InMat(coord vec){
    return vec.lin>0 && vec.col>0 && vec.lin<=n && vec.col<=m;
}
void lee(int mat[105][105],coord st){
    q.push(st);
    while(!q.empty()){
        coord curent=q.front();
        q.pop();
        for(int d=0;d<8;d++){
            coord vecin=curent;
            vecin.lin+=dir[d][0];
            vecin.col+=dir[d][1];

            if(InMat(vecin) && mat[vecin.lin][vecin.col]==0){
                mat[vecin.lin][vecin.col]=mat[curent.lin][curent.col]+1;
                q.push(vecin);
            }
        }
    }

}
int main()
{
    int timp,lin_rasp,col_rasp;
    fin>>n>>m;
    string lin;
    getline(fin, lin);
    for(int i=1;i<=n;i++) {
        getline(fin, lin);
        for(int j=1;j<=m;j++){
            char ch = lin[j-1];
            if(ch==' '){
                matRomeo[i][j]=0;
                matJulieta[i][j]=0;
            }
            else if(ch=='X'){
                matRomeo[i][j]=-1;
                matJulieta[i][j]=-1;
            }
            else if(ch=='R'){
                matRomeo[i][j]=1;
                rom.lin=i; rom.col=j;
            }
            else if(ch=='J'){
                matJulieta[i][j]=1;
                jul.lin=i; jul.col=j;
            }
        }
    }

    lee(matRomeo,rom);
    lee(matJulieta,jul);

    ///
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++)
            fout<<matJulieta[i][j]<<' ';
        fout<<'\n';
    }
    fout<<'\n';
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++)
            fout<<matRomeo[i][j]<<' ';
        fout<<'\n';
    }
    fout<<'\n';
    ///

    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++)
            if(matRomeo[i][j]==matJulieta[i][j] && matRomeo[i][j]!=-1){
                timp=i; lin_rasp=i; col_rasp=j;
            }

    }
    cout<<timp<<' '<<lin_rasp<<' '<<col_rasp;
    return 0;
}