Cod sursa(job #343504)

Utilizator MKLOLDragos Ristache MKLOL Data 26 august 2009 00:34:48
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.69 kb
#include<stdio.h>
struct lee{
    char x,y,c;
}v[101*101];
int n,m,r[101][101],J[101][101],o=0,st,dr,Sy,Sx,z,x;
char car;
char dx[9]={0,1,-1,0,0,1,-1,1,-1};
char dy[9]={0,0,0,1,-1,1,-1,-1,1};

int verf(int www,int q,int e)
{
if(q<1||q>n)
return 0;
if(e<1||e>m)
return 0;
if(www==1)
{
if(r[q][e]!=0)
return 0;
}
if(www==2)
{
if(J[q][e]!=0)
return 0;
}
return 1;

}

void citeste()
{
scanf("%d%d",&n,&m);
z=n;
x=m;

for(int i=1;i<=n;++i)
    {
        scanf("%c",&car);
    for(int j=1;j<=m;++j)
        {
        scanf("%c",&car);
        if(car=='X')
        {
            r[i][j]=-1;
            J[i][j]=-1;
        }
        if(car=='R')
        {
        v[o].x=i;
        v[o].y=j;
        v[o].c=1;
        ++o;
        r[i][j]=1;
        }
        if(car=='J')
        {
        J[i][j]=1;
        v[o].x=i;
        v[o].y=j;
        v[o].c=2;
        ++o;
        }
        }
}
}
void afi()
{

printf("%d %d %d",r[Sx][Sy],Sx,Sy);
}
void rezolva(int k,int a,int b)
{
    for(int i=1;i<=8;++i)
    {
    if(verf(v[k].c,a+dx[i],b+dy[i]))
    {
        v[dr].x=a+dx[i];
        v[dr].y=b+dy[i];
        v[dr].c=v[k].c;
        if(v[k].c==1)
        {
        r[v[dr].x][v[dr].y]=r[a][b]+1;
        }

        if(v[k].c==2)
        {
        J[v[dr].x][v[dr].y]=J[a][b]+1;


        }
        if(r[v[dr].x][v[dr].y]==J[v[dr].x][v[dr].y])
        {
        Sx=v[dr].x;
        Sy=v[dr].y;
        st=n*n;
        }

        ++dr;


    }

    }

}




int main()
{

freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
citeste();
dr=3;
for(st=0;st<dr;++st)
{rezolva(st,v[st].x,v[st].y);
}
afi();


}