Cod sursa(job #1652190)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 14 martie 2016 19:17:38
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.54 kb
#include <iostream>
#include <fstream>
using namespace std;
int dl[]={-1,1,0,0,-1,-1,1,1};
int dc[]={0,0,1,-1,-1,1,-1,1};
struct coada
{
    int lin,col;
};
coada d[105*105],pr,pj,p,v;
char c[101][101];
int a[105][105],b[105][105],i,j,n,m,prim,ultim,k,nr;
void lee()
{
    prim=ultim=0;
    d[0]=pr;
    a[pr.lin][pr.col]=1;
    while(prim<=ultim)
    {
        p=d[prim];
        prim++;
        for(k=0;k<8;k++)
        {
            v.lin=p.lin+dl[k];
            v.col=p.col+dc[k];
            if(a[v.lin][v.col]==0)
            {
                a[v.lin][v.col]=a[p.lin][p.col]+1;
                ultim++;
                d[ultim]=v;
            }
        }
    }
}
void lee1()
{
    prim=ultim=k=0;
    d[0]=pj;
    b[pj.lin][pj.col]=1;
    while(prim<=ultim)
    {
        p=d[prim];
        prim++;
        for(k=0;k<8;k++)
        {
            v.lin=p.lin+dl[k];
            v.col=p.col+dc[k];
            if(b[v.lin][v.col]==0)
            {
                b[v.lin][v.col]=b[p.lin][p.col]+1;
                ultim++;
                d[ultim]=v;
            }
        }
    }
}
int main()
{
    ifstream f("rj.in");
    ofstream g("rj.out");
    f>>n>>m;
    f.get();
    for(i=1;i<=n;i++)
    {
        f.get(c[i],m+1);
        f.get();
        for(j=0;j<m;j++)
        {
            if(c[i][j]==' ')
            {
                a[i][j+1]=0;
                b[i][j+1]=0;
            }
            if(c[i][j]=='X')
            {
                a[i][j+1]=-1;
                b[i][j+1]=-1;
            }
            if(c[i][j]=='R')
            {
                pr.lin=i;
                pr.col=j+1;
                a[i][j+1]=0;
                b[i][j+1]=0;
            }
            if(c[i][j]=='J')
            {
                pj.lin=i;
                pj.col=j+1;
                a[i][j+1]=0;
                b[i][j+1]=0;
            }
        }
    }
    for(i=0;i<=n+1;i++)
    {
        a[0][i]=a[n+1][i]=b[0][i]=b[n+1][i]=-1;
    }
    for(i=0;i<=m+1;i++)
    {
        a[i][0]=a[i][m+1]=b[i][0]=b[i][m+1]=-1;
    }
    lee();
    lee1();
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            if(a[i][j]!=-1 && a[i][j]!=0 && a[i][j]==b[i][j])
            {
                g<<i<<" "<<j<<" "<<a[i][j];
                nr++;
            }
            if(nr==1)
            {
                break;
            }
        }
        if(nr==1)
        {
            break;
        }
    }
    f.close();
    g.close();
    return 0;
}