Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. #include<iostream>
  2. #include<fstream>
  3. using namespace std;
  4.  
  5. ifstream fin ("rj.in");
  6. ofstream fout ("rj.out");
  7.  
  8. int M[103][103],R[103][103],J[103][103];
  9. int di[]={-1,-1,0,1,1,1,0,-1};
  10. int dj[]={0,1,1,1,0,-1,-1,-1};
  11. int Vecini[15000][2];//0-x 1-y
  12. int st,dr,n,m,ri,rj,ji,jj;
  13.  
  14. void dute_romeo(void)
  15. {
  16. st=dr=0;
  17. R[ri][rj]=1;
  18. Vecini[st][0]=ri;
  19. Vecini[st][1]=rj;
  20. int ic,jc,iv,jv,i;
  21. while (st<=dr)
  22. {
  23. ic=Vecini[st][0];
  24. jc=Vecini[st][1];
  25. for (i=0;i<8;i++)
  26. {
  27. iv=ic+di[i];
  28. jv=jc+dj[i];
  29. if (M[iv][jv]==0 && R[iv][jv]==0)
  30. {
  31. R[iv][jv]=R[ic][jc]+1;
  32. dr++;
  33. Vecini[dr][0]=iv;
  34. Vecini[dr][1]=jv;
  35. }
  36. }
  37. st++;
  38. }
  39. }
  40.  
  41. void dute_fa(void)
  42. {
  43. st=dr=0;
  44. J[ji][jj]=1;
  45. Vecini[st][0]=ji;
  46. Vecini[st][1]=jj;
  47. int ic,jc,iv,jv,i;
  48. while (st<=dr)
  49. {
  50. ic=Vecini[st][0];
  51. jc=Vecini[st][1];
  52. for (i=0;i<8;i++)
  53. {
  54. iv=ic+di[i];
  55. jv=jc+dj[i];
  56. if (M[iv][jv]==0 && J[iv][jv]==0)
  57. {
  58. J[iv][jv]=J[ic][jc]+1;
  59. dr++;
  60. Vecini[dr][0]=iv;
  61. Vecini[dr][1]=jv;
  62. }
  63. }
  64. st++;
  65. }
  66. }
  67.  
  68. void bordeaza (void)
  69. {
  70. int i,j;
  71. for (i=0;i<=n+1;i++)
  72. M[i][0]=M[i][m+1]=1;
  73. for (i=0;i<=m;i++)
  74. M[0][i]=M[n+1][i]=1;
  75. }
  76.  
  77. int main()
  78. {
  79. int i,j;
  80. char x[102];
  81. fin>>n>>m;
  82. fin.getline(x,102);///citeste fin.eol din prima linie
  83. for (i=1;i<=n;i++)
  84. {
  85. fin.getline(x,102);
  86. for (j=0;j<m;j++)
  87. {
  88. if (x[j]=='X')
  89. M[i][j+1]=1;
  90. else
  91. if (x[j]=='J')
  92. {
  93. ji=i;
  94. jj=j+1;
  95. }
  96. else
  97. if (x[j]=='R')
  98. {
  99. ri=i;
  100. rj=j+1;
  101. }
  102. }
  103. }
  104. bordeaza();
  105. dute_romeo();
  106. dute_fa();
  107. for (i=1;i<=n;i++)
  108. for (j=1;j<=m;j++)
  109. if (R[i][j]==J[i][j] && R[i][j]!=0)
  110. cout<<i<<' '<<j<<' '<<R[i][j]<<'\n';
  111. return 0;
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement