Cod sursa(job #2244518)

Utilizator stefanut999Paul Colta stefanut999 Data 22 septembrie 2018 22:15:40
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>
using namespace std;

ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,xj,yj,xr,u,yr,x[101][101];
int dlin[9]={0, 1, 1, 1, 0, -1, -1, -1 };
int dcol[9]={1, 1, 0, -1, -1, -1, 0, 1};

typedef struct {int x,y;}COORD;
COORD c[10001];
void citire()
{int j,i;
char l[101];
fin>>n>>m;
fin.getline(l,100);
for(i=0; i<n; i++)
    {fin.getline(l,100);
     for(j=0; j<m; j++)
     {if(l[j] == 'X')
        x[i][j] = -1;
     if(l[j] == 'J')
     {xj=i;
      yj=j;
     }
     if(l[j] == 'R')
     {xr=i;
      yr=j;
     }}
}

}
 int LEE()
{ COORD s;
  int p,i,xn,yn;
  p=u=1;
  c[1].x=xr;
  c[1].y=yr;
  x[xr][yr]=1;
  while(p<=u && !x[xj][yj])
  {s=c[p++];
   for(i=0; i<9; i++)
   { xn=s.x+dlin[i];
     yn=s.y+dcol[i];
     if(!x[xn][yn] && xn<n && xn>=0 && yn<m && yn>=0)
     {
        x[xn][yn]=1+x[s.x][s.y];
        c[++u].x=xn;
        c[u].y=yn;
     }
   }


  }
return x[xj][yj];
}



int main()
{citire();
int p,i,j;

p=(LEE()+1)/2;
fout<<p<<' '; bool ok=1;
for(i=0; i<n; i++)
        if(ok)
          for(j=0; j<m; j++)
            if(x[i][j]==p)
                {fout<<i+1<<' '<<j+1; ok=0;
                break;}

return 0;
}