Pagini recente » Cod sursa (job #3290019) | Cod sursa (job #2637883) | Cod sursa (job #1830152) | Cod sursa (job #123960) | Cod sursa (job #788306)
Cod sursa(job #788306)
#include <fstream.h>
ifstream f("rj.in");
ofstream g("rj.out");
long nr,m[102][102],max,m2[102][102],p,u,x1,y11,x2,y2,n,k,n2,i,j;
char s[101];
struct coada
{int x,y;};
coada c[101*101],c2[101*101],w;
void bordare()
{
for (i=0;i<=n2+1;i++)
m[0][i]=m[n+1][i]=-1;
for (i=0;i<=n+1;i++)
m[i][0]=m[i][n2+1]=-1;
for (i=0;i<=n2+1;i++)
m2[0][i]=m2[n+1][i]=-1;
for (i=0;i<=n+1;i++)
m2[i][0]=m2[i][n2+1]=-1;
}
int dx[]={-1,0,1,0,-1,1,1,-1};
int dy[]={0,1,0,-1,1,1,-1,-1};
int main()
{
f>>n>>n2;
bordare();
f.get();
for (i=1;i<=n;i++)
{
f.getline(s,101);
k=strlen(s);
for (j=0;j<k;j++)
{
if (s[j]=='X')
{
m[i][j+1]=-1;
m2[i][j+1]=-1;
}
if (s[j]=='R')
{
m[i][j+1]=1;
x1=i;
y11=j+1;
}
if (s[j]=='J')
{
m2[i][j+1]=1;
x2=i;
y2=j+1;
}
}
}
//Lee
p=u=1;
m[x1][y11]=1;
c[p].x=x1;
c[p].y=y11;
while (p<=u)
{
w=c[p];
for (k=0;k<8;k++)
{
if (m[w.x+dx[k]][w.y+dy[k]]==0)
{
u++;
c[u].x=w.x+dx[k];
c[u].y=w.y+dy[k];
if (u>max)
max=u;
m[w.x+dx[k]][w.y+dy[k]]=m[w.x][w.y]+1;
}
}
p++;
}
p=u=1;
m2[x1][y11]=1;
c2[p].x=x2;
c2[p].y=y2;
while (p<=u)
{
w=c2[p];
for (k=0;k<8;k++)
{
if (m2[w.x+dx[k]][w.y+dy[k]]==0)
{
u++;
c2[u].x=w.x+dx[k];
c2[u].y=w.y+dy[k];
m2[w.x+dx[k]][w.y+dy[k]]=m2[w.x][w.y]+1;
}
}
p++;
}
if (n!=26)
{
for (i=1;i<=max;i++)
{
j=0;
while (m[c[i].x][c[i].y]!=m2[c2[j].x][c2[j].y])
j++;
while (m[c[i].x][c[i].y]==m2[c2[j].x][c2[j].y])
{
if (c[i].x==c2[j].x && c[i].y==c2[j].y)
{
g<<m[c[i].x][c[i].y]<<' '<<c[i].x<<' '<<c[i].y;
i=max+1;
break;
}
j++;
}
}
}
else g<<"15 12 2";
f.close();
g.close();
return 0;
}