Pagini recente » Cod sursa (job #93697) | Cod sursa (job #378433) | Cod sursa (job #1644338) | Cod sursa (job #1439737) | Cod sursa (job #1327648)
#include <cstdio>
#include <queue>
using namespace std;
struct opr {int x,y;};
opr d[9],o,l;
queue <opr> c1;
queue <opr> c2;
short a[200][200];
int m,n,x1,y1,k=2,x2,y2;
void tr()
{
int ok=0,ok1,ok2,ok3,ok4;
int xi,yi,xf,yf,i,j;
while (!ok)
{
ok1=ok2=ok3=ok4=1;
xi=x1-k;xf=x1+k;
yi=y1-k;yf=y1+k;
if (yi<1) {ok1=0;yi=1;}
if (xf>n) {ok2=0;xf=n;}
if (yf>m) {ok3=0;yf=m;}
if (xi<1) {ok4=0;xi=1;}
if (ok1)
for (i=xi;i<=xf;i++)
if (a[i][yi]==0)
{
a[i][yi]=1;
o.x=i;o.y=yi;
c1.push(o);
}
if (ok2)
for (j=yi;j<=yf;j++)
if (a[xf][j]==0)
{
a[xf][j]=1;
o.x=xf;o.y=j;
c1.push(o);
}
if (ok3)
for (i=xi;i<=xf;i++)
if (a[i][yf]==0)
{
a[i][yf]=1;
o.x=i;o.y=yf;
c1.push(o);
}
if (ok4)
for (j=yi;j<=yf;j++)
if (a[xi][j]==0)
{
a[xi][j]=1;
o.x=xi;o.y=j;
c1.push(o);
}
ok1=ok2=ok3=ok4=1;
xi=x2-k;xf=x2+k;
yi=y2-k;yf=y2+k;
if (yi<1) {ok1=0;yi=1;}
if (xf>n) {ok2=0;xf=n;}
if (yf>m) {ok3=0;yf=m;}
if (xi<1) {ok4=0;xi=1;}
if (ok1)
for (i=xi;i<=xf;i++)
{
if (a[i][yi]==0)
{
a[i][yi]=2;
o.x=i;o.y=yi;
c2.push(o);
}
else if (a[i][yi]==1) {ok=1;x1=x2=i;y1=y2=yi;break;}
}
if (ok2)
for (j=yi;j<=yf;j++)
{
if (a[xf][j]==0)
{
a[xf][j]=2;
o.x=xf;o.y=j;
c2.push(o);
}
else if (a[xf][j]==1) {ok=1;x1=x2=xi;y1=y2=j;break;}
}
if (ok3)
for (i=xi;i<=xf;i++)
{
if (a[i][yf]==0)
{
a[i][yf]=2;
o.x=i;o.y=yf;
c2.push(o);
}
else if (a[i][yf]==1) {ok=1;x1=x2=i;y1=y2=yf;break;}
}
if (ok4)
for (j=yi;j<=yf;j++)
{
if (a[xi][j]==0)
{
a[xi][j]=2;
o.x=xi;o.y=j;
c1.push(o);
}
else if (a[xi][j]==1) {ok=1;x1=x2=xi;y1=y2=j;break;}
}
while (!c1.empty())
{
o=c1.front();
if (a[o.x][o.y]==1) a[o.x][o.y]=0;
c1.pop();
}
while (!c2.empty())
{
o=c2.front();
if (a[o.x][o.y]==1) a[o.x][o.y]=0;
c2.pop();
}
k++;
}
}
int main()
{
FILE *f,*g;
f=freopen("rj.in","r",stdin);
g=freopen("rj.out","w",stdout);
int i,j;
char c[105];
fscanf(f,"%d%d",&n,&m);
gets(c);
c[m]=NULL;
for (i=1;i<=n;i++)
{
gets(c);
for (j=0;j<=m-1;j++)
{
if (c[j]=='X') a[i][j+1]=-1;
else
if(c[j]=='R') {x1=i;y1=j+1;}
else
if (c[j]=='J') {x2=i;y2=j+1;}
}
}
tr();
fprintf(g,"%d %d %d\n",k,x1,y1);
fclose(f);
fclose(g);
return 0;
}