Cod sursa(job #2112152)

Utilizator ilie0712Botosan Ilie ilie0712 Data 23 ianuarie 2018 09:26:55
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.51 kb
#include <fstream>

using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
const int N=102;
const int dl[]= {-1,0,1,0,1,-1,-1,1};
const int dc[]= {0,1,0,-1,1,-1,1,-1};
struct poz
{
    int l,c;
};
int a[N][N],b[N][N];
int dR[N][N],dJ[N][N],n,m;
poz q[N];
char v[N];
int main()
{
    int i,j,st,dr,vmin=99999,imin=999999,jmin=999999;
    poz r,ju,x,y;
    //char p;
    fin>>n>>m>>ws;
    for(i=1; i<=n; i++)
    {
        fin.getline(1+v,N);
        //fin>>ws;
        for(j=1; j<=m; j++)
        {
           // p=v[j];
            if(v[j]=='X')
            {
                a[i][j]=-2;
                b[i][j]=-2;
            }
            else if(v[j]=='R')
            {
                a[i][j]=0;
                b[i][j]=-2;
                r=(poz)
                {
                    i,j
                };
            }
            else if(v[j]=='J')
            {
                a[i][j]=-2;
                b[i][j]=0;
                ju=(poz)
                {
                    i,j
                };
            }
            else
            {
                a[i][j]=-1;
                b[i][j]=-1;
            }

        }

    }
  //bordare
   for(i=0;i<=m+1;i++)
   {a[0][i]=a[n+1][i]=-2;
    b[0][i]=b[n+1][i]=-2;}
   for(i=0;i<=n+1;i++)
   {
       a[i][0]=a[i][m+1]=-2;
       b[i][0]=b[i][m+1]=-2;
   }
  /* for(i=0;i<=n+1;i++)
   {
       for(j=0;j<=m+1;j++)
        fout<<a[i][j]<<" ";
       fout<<"\n";
   }
   fout<<"\n";*/
   st=0; dr=-1;
   q[++dr]=r;
   a[r.l][r.c]=1;
   while(st<=dr)
   {
       x=q[st++];
       for(i=0;i<8;i++)
       {
           y.l=x.l+dl[i];
           y.c=x.c+dc[i];
           if(a[y.l][y.c]==-1)
           {
               q[++dr]=y;
               a[y.l][y.c]=1+a[x.l][x.c];
           }
       }
   }
   st=0; dr=-1;
   q[++dr]=ju;
   b[ju.l][ju.c]=1;
   while(st<=dr)
   {
       x=q[st++];
       for(i=0;i<8;i++)
       {
           y.l=x.l+dl[i];
           y.c=x.c+dc[i];
           if(b[y.l][y.c]==-1)
           {
               q[++dr]=y;
               b[y.l][y.c]=1+b[x.l][x.c];
           }
       }
   }
  /* for(i=1;i<=n;i++)
   {
       for(j=1;j<=m;j++)
        fout<<a[i][j]<<" ";
       fout<<"\n";
   }*/
   for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
   {
       if(a[i][j]==b[i][j] && a[i][j]!=-2 && a[i][j]!=-1 && a[i][j]!=1)
        if(a[i][j]<vmin)
          {vmin=a[i][j]; imin=i; jmin=j;}
   }
   fout<<vmin<<" "<<imin<<" "<<jmin;
    return 0;
}