Pagini recente » Cod sursa (job #1816416) | Cod sursa (job #2485166) | Cod sursa (job #2255776) | Cod sursa (job #510059) | Cod sursa (job #2064539)
#include <fstream>
#include <cctype>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
struct punct
{
int l,c;
};
punct q[105*105];
int a[105][105];
int aux[105][105];
int dx[10]= {-1,-1,0,1,1,1,0,-1};
int dy[10]= {0,1,1,1,0,-1,-1,-1};
int linie,coloana;
char caracter;
int xr,yr,xj,yj;
int lmin,cmin;
int x,y,xx,yy,t;
int p,u;
int n,m,i,j;
int Min=1005*1005;
int main()
{
f>>n>>m;
f.get(caracter);
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
f.get(caracter);
if(caracter=='R')
{
xr=i;
yr=j;
a[i][j]=1;
}
else if(caracter=='J')
{
xj=i;
yj=j;
a[i][j]=1;
}
if(caracter=='X')
a[i][j]=-1;
else if(caracter==' ')
a[i][j]=1;
}
f.get(caracter);
}
for(i=0; i<=m+1; i++)
a[0][i]=a[n+1][i]=-1;
for(i=1; i<=n; i++)
a[i][0]=a[i][m+1]=-1;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
if(a[i][j]==1)
{
for(linie=0; linie<=n+1; linie++)
for(coloana=0; coloana<=m+1; coloana++)
aux[linie][coloana]=a[linie][coloana];
p=u=1;
q[p].l=i;
q[p].c=j;
while(p<=u)
{
x=q[p].l;
y=q[p].c;
for(t=0; t<=7; t++)
{
xx=x+dx[t];
yy=y+dy[t];
if(aux[xx][yy]==1)
{
u++;
q[u].l=xx;
q[u].c=yy;
aux[xx][yy]=aux[x][y]+1;
}
}
p++;
}
//g<<aux[xr][yr]<<' '<<aux[xj][yj]<<' '<<i<<' '<<j<<' '<<'\n';
if(aux[xr][yr]==aux[xj][yj]&&aux[xr][yr]>1)
if(aux[xr][yr]<Min)
{
Min=aux[xr][yr];
lmin=i;
cmin=j;
}
}
g<<Min<<' '<<lmin<<' '<<cmin<<'\n';
return 0;
}