Pagini recente » Cod sursa (job #155939) | Cod sursa (job #2032026) | Cod sursa (job #589787) | Cod sursa (job #1809331) | Cod sursa (job #1703385)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
struct poz
{
short x,y;
};
short i,j,n,m,x1=0,x2=0,y1=0,y2=0;
int mat1[105][105];
int mat2[105][105];
char x[106];
int dx[]={-1,-1,0,1,1,1,0,-1};
int dy[]={0,1,1,1,0,-1,-1,-1};
poz t,ts,coada[10500];
void lee1()
{
int u,p;
p=1;
u=1;
coada[1].x=x2;
coada[1].y=y2;
while(p<=u)
{
t.x=coada[p].x;
t.y=coada[p].y;
for(i=0;i<8;i++)
{
ts.x=t.x+dx[i];
ts.y=t.y+dy[i];
if(mat1[ts.x][ts.y]==0)
{
u++;
coada[u].x=ts.x;
coada[u].y=ts.y;
mat1[ts.x][ts.y]=mat1[t.x][t.y]+1;
}
}
p++;
}
}
void lee2()
{
int u1,p1;
p1=1;
u1=1;
coada[1].x=x1;
coada[1].y=y1;
while(p1<=u1)
{
t.x=coada[p1].x;
t.y=coada[p1].y;
for(i=0;i<8;i++)
{
ts.x=t.x+dx[i];
ts.y=t.y+dy[i];
if(mat2[ts.x][ts.y]==0)
{
u1++;
coada[u1].x=ts.x;
coada[u1].y=ts.y;
mat2[ts.x][ts.y]=mat2[t.x][t.y]-1;
}
}
p1++;
}
}
int main()
{
f>>n>>m;
f.get();
for(i=1;i<=n;i++)
{
f.getline(x,105);
for(j=0;j<m;j++)
{
if(x[j]=='X')
{
mat1[i][j+1]=1;
mat2[i][j+1]=1;
}
else
{
if(x[j]=='R')
{
x1=i;
y1=j+1;
mat1[i][j+1]=-1;
}
else
{
if(x[j]=='J')
{
x2=i;
y2=j+1;
mat2[i][j+1]=1;
}
}
}
}
}
for(i=0;i<=n+1;i++)
{
mat1[i][0]=1;
mat1[i][m+1]=1;
mat2[i][0]=1;
mat2[i][m+1]=1;
}
for(j=0;j<=m+1;j++)
{
mat1[0][j]=1;
mat1[n+1][j]=1;
mat2[0][j]=1;
mat2[n+1][j]=1;
}
lee1();
lee2();
int Min=99999999;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(mat1[i][j]>0&&mat2[i][j]<0&&mat1[i][j]==-1*mat2[i][j]&&mat1[i][j]<Min)
{
Min=mat1[i][j];
x1=i;
y1=j;
}
}
}
g<<Min+1<<" "<<x1<<" "<<y1;
f.close();
g.close();
return 0;
}