Cod sursa(job #2557788)

Utilizator furfur233Fur Fur furfur233 Data 25 februarie 2020 23:36:54
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("rj.in");
ofstream fout("rj.out");

int n, m, mat[101][101];
char chr;

const int addLin[]={-1,-1,-1,0,1,1,1,0};
const int addCol[]={-1,0,1,1,1,0,-1,-1};

struct Pos{
	int lin, col;
};
Pos r, j;

void scan(){
	fin>>n>>m;
	for(int i=1; i<=n; i++){
		fin.get();
		for(int jo=1; jo<=m; jo++){
			fin.get(chr);
			if(chr=='X'){
				mat[i][jo]=-1;
			}else if(chr==' '){
				mat[i][jo]=0;
			}else if(chr=='R'){
				mat[i][jo]=0;
				r.lin=i;
				r.col=jo;
			}else{
				mat[i][jo]=0;
				j.lin=i;
				j.col=jo;
			}
		}
	}
}

void border(){
	for(int i=0; i<=n+1; i++){
		mat[i][0]=mat[i][n+1]=-1;
	}
	for(int j=1; j<=n; j++){
		mat[0][j]=mat[n+1][j]=-1;
	}
}
queue<Pos> q;
int in=0, sf=0;
Pos ngh, a,b;
void lee(){
	mat[r.lin][r.col]=mat[j.lin][j.col]=1;
	q.push(r);
	q.push(j);
	while(!q.empty()){
		a=q.front();
		q.pop();
		for(int i=0; i<8; i++){
			ngh.lin=a.lin+addLin[i];
			ngh.col=a.col+addCol[i];
			if(mat[ngh.lin][ngh.col]==0){
				mat[ngh.lin][ngh.col]=mat[a.lin][a.col]+1;
				q.push(ngh);
			}
		}
	}
	fout<<mat[a.lin][a.col]<<" ";
}

int max_lin=a.lin, max_col=a.col;
void coord(){
	for(int i=1; i<=a.lin; i++){
		for(int j=1; j<=a.col; j++){
			if(mat[i][j]==mat[a.lin][a.col] && max_lin<=i && max_col<=j){
				max_lin=i;
				max_col=j;
			}
		}
	}
}
int main(){
	scan();
	border();
	lee();
	coord();
	fout<<max_lin<<" "<<max_col;
}