Cod sursa(job #1877395)

Utilizator StefanTufisTufis Stefan StefanTufis Data 13 februarie 2017 12:11:47
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.93 kb
#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
struct pozitie{short l,c;};
short dl[]={-1,0,1,0,-1,1,-1,1};
short dc[]={0,1,0,-1,-1,1,1,-1};
pozitie C[100001],romeo,julieta,p,v;
char s[101];
short m,n,i,j,R[101][101],J[101][101],prim,ultim,k,mini,I,K;
void lee(short x0,short y0, short M[101][101])
{
    C[0].l=x0;
    C[0].c=y0;
    prim=ultim=0;
    M[x0][y0]=1;

    while(prim<=ultim )
    {
        p=C[prim];
        prim++;
        for(k=0;k<=7;k++)
        {
            v.l=p.l+dl[k];
            v.c=p.c+dc[k];
            if(M[v.l][v.c]==0)
            {
                M[v.l][v.c]=M[p.l][p.c]+1;
                ultim++;
                C[ultim]=v;
            }
        }
    }
}
int main()
{
    f>>m>>n;
    f.get();
    for(i=1;i<=n;i++)
    {
        f.getline(s,101);
        {for(j=0;j<m;j++)


            if(s[j]=='R') {romeo.l=i; romeo.c=j+1;}
            else  if(s[j]=='J') {julieta.l=i; julieta.c=j+1;}
            else if (s[j]==' ') R[i][j+1]=J[i][j+1]=0;
            else if (s[j]=='X') R[i][j+1]=J[i][j+1]=-1;
        }
    }
     for(i=0;i<=n+1;i++)
          {
               R[i][0]=-1;
               R[i][m+1]=-1;
               J[i][0]=-1;
               J[i][m+1]=-1;
          }
    for(j=0;j<=m+1;j++)
    {
        R[0][j]=-1;
        R[n+1][j]=-1;
         J[0][j]=-1;
        J[n+1][j]=-1;

    }
    mini=10202;
    lee(romeo.l,romeo.c,R);
    lee(julieta.l,julieta.c,J);
    for(i=0;i<=n+1;i++)
        for(j=0;j<=m+1;j++)
        {
            if(R[i][j]==J[i][j] && R[i][j]>0)
                if(R[i][j]<mini)
                    {
                        mini=R[i][j];
                        I=i;
                        K=j;
                    }
        }
     for(i=0;i<=n+1;i++)
        {
            for(j=0;j<=m+1;j++)
                g<<J[i][j]<<" ";
                g<<endl;
        }
    return 0;
}