Pagini recente » Cod sursa (job #2962543) | Cod sursa (job #1283342) | Cod sursa (job #3212939) | Cod sursa (job #1346879) | Cod sursa (job #2954780)
// https://infoarena.ro/problema/rj
// OJI 2004, clasa a 10-a RJ
#include<fstream>
#include<cstring>
#include <climits>
using namespace std;
ifstream f ("rj.in");
ofstream g ("rj.out");
const int addRow[] = {0, 1, 0, -1, -1, 1, -1, 1};
const int addCol[] = {1, 0, -1, 0, -1, 1, 1,-1};
char c;
int matr[102][102],matj[102][102],i,j,m,n,inr,inj,sfr,sfj,mini=INT_MAX;
struct Pos {
int row;
int col;
};
Pos begr, begj;
Pos qr[102 * 102];
Pos posr;
Pos nghr;
void lee(int mat[102][102], Pos begr, Pos begj) {
qr[0] = begr;
inr = inj = sfr = sfj = 0;
mat[begr.row][begr.col] = 1;
//mat[begj.row][begj.col] = 1;
while (inr <= sfr && posr.col!=begj.col && posr.row!=begj.row) {
posr = qr[inr++];
for (int i = 0; i < 8; i++) {
nghr.row = posr.row + addRow[i];
nghr.col = posr.col + addCol[i];
if (mat[nghr.row][nghr.col]==32) {
mat[nghr.row][nghr.col] = mat[posr.row][posr.col] + 1;
qr[++sfr] = nghr;
}
}
}
//g<< inr << " " << qr[inr].row << " " << qr[inr].col;
}
int main()
{
f>>n>>m;
f.get();
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{f.get(c);
matr[i][j] += c;
matj[i][j] +=c;
if(c=='R')
{
begr.row = i;
begr.col = j;
}
else
if(c=='J')
{
begj.row = i;
begj.col = j;
}
}
f.get();
}
for (i = 0; i <= m + 1; i++)
matr[i][0] = matr[i][n + 1] = matj[i][0] = matj[i][n+1] = 88;
for (j = 0; j <= n + 1; j++)
matr[0][j] = matr[m + 1][j] = matj[0][j] = matj[m+1][j] = 88;
lee(matj,begr,begj);
lee(matr,begj,begr);
int ti=0,tj=0;
for(i=1; i<= m; i++)
for(j = 1; j <= n; j++)
if(matr[i][j]==matj[i][j])
if(mini>matr[i][j] && matr[i][j]!=0)
{
mini = matr[i][j];
ti=i;
tj=j;
}
g<<mini<<' '<<ti<<' '<<tj;
f.close();
g.close();
return 0;
}