Cod sursa(job #247990)

Utilizator PavelRazvanPavel Razvan PavelRazvan 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;
}