Cod sursa(job #1877365)

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

    while(prim<=ultim )//&& R[p.l][p.c]==0)
    {
        p=C[prim];
        prim++;
        for(k=0;k<=3;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][n+1]=-1;
               J[i][0]=-1;
               J[i][n+1]=-1;
          }
    for(j=1;j<=n;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;
                }
        }
    g<<mini-1<<" "<<I<<" "<<K;





    return 0;
}