Pagini recente » Cod sursa (job #2592778) | Cod sursa (job #910261) | Cod sursa (job #349765) | Cod sursa (job #1648163) | Cod sursa (job #921692)
Cod sursa(job #921692)
#include <fstream>
using namespace std;
int r[101][101],J[101][101],n,m,i,j,xr,yr,xj,yj,rez[4];
void citire()
{
string x;
ifstream in("rj.in");
in>>n>>m;
x=in.get();
for (i=1;i<=n;++i)
{
getline(in,x);
for (j=1;j<=m;++j)
{
if (x[j-1]=='R')
{
r[i][j]=1;
xr=i;
yr=j;
J[i][j]=-2;
}
if (x[j-1]=='J')
{
r[i][j]=-2;
xj=i;
yj=j;
J[i][j]=1;
}
if (x[j-1]=='X')
r[i][j]=J[i][j]=-1;
if (x[j-1]==' ')
r[i][j]=J[i][j]=0;
}
}
in.close();
}
void bordare()
{
for (i=0;i<=n+1;++i)
r[i][0]=r[i][m+1]=J[i][0]=J[i][m+1]=-1;
for (i=0;i<=m+1;i++)
r[0][i]=r[n+1][i]=J[0][i]=J[n+1][i]=-1;
}
void lee(int x,int y,int m[101][101])
{
int l,c,di[]={-1,-1,0,1,1,1,0,-1},dj[]={0,1,1,1,0,-1,-1,-1},inc=1,sf=1,k,coada[10000][3];
coada[inc][0]=x;
coada[inc][1]=y;
coada[inc][2]=1;
while (inc<=sf)
{
for (k=0;k<=7;++k)
{
l=coada[inc][0]+di[k];
c=coada[inc][1]+dj[k];
if (m[l][c]==0)
{
m[l][c]=coada[inc][2]+1;
++sf;
coada[sf][0]=l;
coada[sf][1]=c;
coada[sf][2]=m[l][c];
}
}
++inc;
}
}
void cauta()
{
int dmin=9999;
for (i=1;i<=n;++i)
for (j=1;j<=m;++j)
if (r[i][j]==J[i][j]&&r[i][j]!=-1&&r[i][j]!=0&&r[i][j]!=-2)
{
if (dmin>r[i][j])
{
rez[1]=r[i][j];
rez[2]=i;
rez[3]=j;
dmin=r[i][j];
}
}
}
void afis()
{
ofstream out("rj.out");
out<<rez[1]<<' '<<rez[2]<<' '<<rez[3]<<'\n';
}
int main()
{
citire();
bordare();
lee(xr,yr,r);
lee(xj,yj,J);
cauta();
afis();
return 0;
}