Cod sursa(job #247990)
Utilizator | Data | 24 ianuarie 2009 17:20:49 | |
---|---|---|---|
Problema | Rj | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.92 kb |
#include<stdio.h>
int n,m,i,j,x,y,pas,ok,a[102][102],c,o,n2,x2,y2;
int main ()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)
{
scanf("\n");
for(j=1;j<=m;++j)
{
scanf("%c",&c);
if(c=='X')
a[i][j]=-1;
if(c=='R')
a[i][j]=1;
if(c=='J')
{
x=i;
y=j;
}
if(c==' ')
a[i][j]=0;
}
}
for(pas=1,ok=1; ok; ++pas)
{
ok=0;
for(i=1; i<=n; ++i)
for(j=1; j<=m; ++j)
if(a[i][j]==pas)
{
if(a[i-1][j]==0)
{
a[i-1][j]=a[i][j]+1;
ok=1;
}
if(a[i+1][j]==0)
{
a[i+1][j]=a[i][j]+1;
ok=1;
}
if(a[i][j+1]==0)
{
a[i][j+1]=a[i][j]+1;
ok=1;
}
if(a[i][j-1]==0)
{
a[i][j-1]=a[i][j]+1;
ok=1;
}if(a[i-1][j-1]==0)
{
a[i-1][j-1]=a[i][j]+1;
ok=1;
}
if(a[i+1][j-1]==0)
{
a[i+1][j-1]=a[i][j]+1;
ok=1;
}
if(a[i-1][j+1]==0)
{
a[i-1][j+1]=a[i][j]+1;
ok=1;
}
if(a[i+1][j+1]==0)
{
a[i+1][j+1]=a[i][j]+1;
ok=1;
}
}
}
n2=a[x][y]/2+1;
x2=x;
y2=y;
printf("%d ",n2);
for(i=a[x][y];i>=n2;--i)
{
if(a[x2][y2-1]==i)
{
--y2;continue;
}
if(a[x2][y2+1]==i)
{
++y2;continue;
}
if(a[x2+1][y2]==i)
{
--x2;continue;
}
if(a[x2-1][y2]==i)
{
--x2;continue;
}
if(a[x2-1][y2-1]==i)
{
--x2;
--y2;continue;
}
if(a[x2+1][y2-1]==i)
{
++x2;
--y2;continue;
}
if(a[x2-1][y2+1]==i)
{
++y2;
--x2;continue;
}
if(a[x2+1][y2+1]==i)
{
++x2;
++y2;continue;
}
}
printf("%d %d",x2,y2);
return 0;
}