Cod sursa(job #1374726)

Utilizator deiandreiMazilu Andrei deiandrei Data 5 martie 2015 10:35:07
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.52 kb
#include <cstdio>
#include <cstring>
int r[102][102],ju[102][102],n,m,rx,ry,jx,jy;
int dx[8]={-1,0,1,0,-1,1,1,-1};
int dy[8]={0,1,0,-1,1,1,-1,-1};
char c;
struct stiva{ int x,y; } coada[100*100+3],element;

void fill(int x, int y, int mat[102][102]) {
    memset(coada,0,sizeof coada);
    int p,u,xt,yt;
    p=u=1;
    coada[1].x=x;
    coada[1].y=y;
    while(p<=u) {
        element=coada[p];
        for(int i=0;i<8;i++) {
            xt=element.x+dx[i];
            yt=element.y+dy[i];
            if(mat[xt][yt]==0) u++,coada[u].x=xt,coada[u].y=yt,mat[xt][yt]=mat[element.x][element.y]+1;
        }
        p++;
    }
}

int main()
{
    freopen("rj.in","r",stdin);
    freopen("rj.out","w",stdout);
    int i,j,l,c,tmin=9000;
    scanf("%d%d\n", &n, &m);
    for(i=1;i<=n;i++) {
        for(j=1;j<=m;j++) {
            c=' ';
            scanf("%c", &c);
            if(c==' ') r[i][j]=0,ju[i][j]=0;
            else if(c=='R') r[i][j]=1,rx=i,ry=j,ju[i][j]=0;
            else if(c=='J') ju[i][j]=1,jx=i,jy=j,r[i][j]=0;
            else r[i][j]=ju[i][j]=-1;
        }
        scanf("\n");
    }
    for(i=0;i<=n+1;i++) r[i][0]=ju[i][0]=r[i][m+1]=ju[i][m+1]=-1;
    for(j=0;j<=m+1;j++) r[0][j]=ju[0][j]=r[n+1][j]=ju[n+1][j]=-1;
    fill(rx,ry,r);
    fill(jx,jy,ju);
    for(i=1;i<=n;i++) for(j=1;j<=m;j++) {
        if(r[i][j]==ju[i][j] && r[i][j]<tmin && r[i][j]>1) {
            tmin=r[i][j];
            l=i;
            c=j;
        }
    }
    printf("%d %d %d",tmin,l,c);
    return 0;
}