Cod sursa(job #1577716)

Utilizator adystar00Bunea Andrei adystar00 Data 23 ianuarie 2016 19:11:43
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.43 kb
#include<stdio.h>
using namespace std;
int ar[226][226],aj[256][256],linie[8],coloana[8];
struct coadda
{
    int lin,col;
};
coadda coada[65025];
int main()
{
    freopen("rj.in","r",stdin);
    freopen("rj.out","w",stdout);
    int n,m,i,j,ic,sf,l,c,nr,min=100000,minx,miny,linr,colr,colj,linj;
    char C;
    linie[0]=-1;
    linie[1]=-1;
    linie[2]=0;
    linie[3]=1;
    linie[4]=1;
    linie[5]=1;
    linie[6]=0;
    linie[7]=-1;
    coloana[0]=0;
    coloana[1]=1;
    coloana[2]=1;
    coloana[3]=1;
    coloana[4]=0;
    coloana[5]=-1;
    coloana[6]=-1;
    coloana[7]=-1;
    scanf("%d%d",&n,&m);
    scanf("%c",&C);
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=m; j++)
        {
            scanf("%c",&C);
            if(C=='X')
            {
                ar[i][j]=-1;
                aj[i][j]=-1;
            }
            if(C=='R')
            {
                linr=i;
                colr=j;
                ar[i][j]=1;
            }
            if(C=='J')
            {
                linj=i;
                colj=j;
                aj[i][j]=1;
            }
        }
        scanf("%c",&C);
    }
    ic=sf=1;
    coada[ic].lin=linr;
    coada[ic].col=colr;
    while(ic<=sf)
    {
        for(i=0; i<8; i++)
        {
            l=coada[ic].lin+linie[i];
            c=coada[ic].col+coloana[i];
            if(l>=1&&l<=n&&c>=1&&c<=m&&ar[l][c]==0)
            {
                sf++;
                coada[sf].lin=l;
                coada[sf].col=c;
                ar[l][c]=ar[coada[ic].lin][coada[ic].col]+1;
            }
        }
        ic++;
    }
    ic=sf=1;
    coada[ic].lin=linj;
    coada[ic].col=colj;
    while(ic<=sf)
    {
        for(i=0; i<8; i++)
        {
            l=coada[ic].lin+linie[i];
            c=coada[ic].col+coloana[i];
            if(l>=1&&l<=n&&c>=1&&c<=m&&aj[l][c]==0)
            {
                sf++;
                coada[sf].lin=l;
                coada[sf].col=c;
                aj[l][c]=aj[coada[ic].lin][coada[ic].col]+1;
            }
        }
        ic++;
    }
    nr=0;
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
            if(ar[i][j]>0&&aj[i][j]>0&&ar[i][j]==aj[i][j])
                if(aj[i][j]<min)
                {
                    min=aj[i][j];
                    minx=i;
                    miny=j;
                }
    printf("%d %d %d",min,minx,miny);
    return 0;
}