Cod sursa(job #1617101)

Utilizator lauratalaatlaura talaat lauratalaat Data 27 februarie 2016 12:38:36
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.73 kb
#include<stdio.h>
int linie[8]={-1,-1,0,1,1,1,0,-1};
int coloana[8]={0,1,1,1,0,-1,-1,-1};
struct bine { int lin ; int col;};
bine coada[100001];
int romeo[101][101],julieta[101][101],m,n;
void lee(int lp,int cp, int a[101][101]){
    int ic,sf,l,c,i;
    ic=sf=1;
    coada[ic].lin=lp;
    coada[ic].col=cp;
    a[lp][cp]=1;
    while(ic<=sf){
        for(i=0;i<8;i++){
            l=linie[i]+coada[ic].lin;
            c=coloana[i]+coada[ic].col;
            if(a[l][c]==0&&l>=1&&l<=n&&c>=1&&c<=m){
                sf++;
                coada[sf].lin=l;
                coada[sf].col=c;
                a[l][c]=a[coada[ic].lin][coada[ic].col]+1;
            }
        }
        ic++;
    }
}
int main(){
    int i,j,lr,cr,lj,cj,min,ls,cs;
    char c;
    freopen("rj.in","r",stdin);
    freopen("rj.out","w",stdout);
    scanf("%d%d%c",&n,&m,&c);
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){
            scanf("%c",&c);
            if(c=='X'){
                romeo[i][j]=-1;
                julieta[i][j]=-1;
            }
            else
                if(c=='R'){
                    lr=i;
                    cr=j;
                }
                else
                    if(c=='J'){
                        lj=i;
                        cj=j;
                    }
        }
        if(c!='\n')
            scanf("%c",&c);
    }
    lee(lr,cr,romeo);
    lee(lj,cj,julieta);
    min=99999999;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++){
            if(romeo[i][j]==julieta[i][j]&&romeo[i][j]<min&&romeo[i][j]!=0&&romeo[i][j]!=-1){
                min=romeo[i][j];
                ls=i;
                cs=j;
            }
        }
    printf("%d %d %d\n",min,ls,cs);
    return 0;
}