Cod sursa(job #1807070)

Utilizator BogauuuBogdan Ivancu Bogauuu Data 15 noiembrie 2016 23:17:45
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.07 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream fin("rj.in");
ofstream fout("rj.out");

int n,m,k,i,j,d,irom,jrom,ijul,jjul,ic,jc,icu,jcu,st,dr,minim,iaf,jaf,a[103][103],b[103][103],c[3][11022];
char ci[102];

int di[]={-1,-1,-1,0,0,1,1,1};
int dj[]={-1,0,1,-1,1,-1,0,1};

int main ()
{
    fin >> n >> m;
    for(i=0;i<=n;i++)
    {
        fin.getline(ci,101);
        k=strlen(ci);
        for(j=0;j<k;j++)
        {
            if(ci[j]=='R')
            {
                irom=i;
                jrom=j+1;
            }
            if(ci[j]=='J')
            {
                ijul=i;
                jjul=j+1;
            }
            if(ci[j]=='X') a[i][j+1]=b[i][j+1]=-1;
        }
    }
    c[0][1]=irom;
    c[1][1]=jrom;
    a[irom][jrom]=1;
    st=1;
    dr=1;
    while(st<=dr)
    {
        ic=c[0][st];
        jc=c[1][st];
        for(d=0;d<=7;d++)
        {
            icu=ic+di[d];
            jcu=jc+dj[d];
            if(icu>=1 && jcu>=1 && icu<=n && jcu<=m && a[icu][jcu]==0)
            {
                dr++;
                c[0][dr]=icu;
                c[1][dr]=jcu;
                a[icu][jcu]=1+a[ic][jc];
            }
        }
        st++;
    }
    c[0][1]=ijul;
    c[1][1]=jjul;
    st=1;
    dr=1;
    b[ijul][jjul]=1;
    while(st<=dr)
    {
        ic=c[0][st];
        jc=c[1][st];
        for(d=0;d<=7;d++)
        {
            icu=ic+di[d];
            jcu=jc+dj[d];
            if(icu>=1 && jcu>=1 && icu<=n && jcu<=m && b[icu][jcu]==0)
            {
                dr++;
                c[0][dr]=icu;
                c[1][dr]=jcu;
                b[icu][jcu]=1+b[ic][jc];
            }
        }
        st++;
    }
    minim=2000000001;
    for(i=1;i<=n;i++) for(j=1;j<=m;j++)
    {
        if(a[i][j]==b[i][j] && b[i][j]>0)
        {
            if(b[i][j]<minim)
            {
                minim=a[i][j];
                iaf=i;
                jaf=j;
            }
        }
    }
    fout << minim << " " << iaf << " " << jaf;
    return 0;
}