Advertisement
uzimane_

Нахождение первого и последнего вхождения заданного числа в

Jul 10th, 2020
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. freopen("input.txt", "r", stdin);
  9. freopen("output.txt", "w", stdout);
  10.  
  11. int n, k, c, l, r, m;
  12. scanf("%d", &n);
  13. int f = 0;
  14. int* mas = new int[n + 2];
  15. for (int i = 0; i < n; i++)
  16. {
  17. scanf("%d", &mas[i]);
  18. }
  19. scanf("%d", &k);
  20. int b = n;
  21. for (int s = 0; s < k; s++)
  22. {
  23. scanf("%d", &c);
  24. int max;
  25. int min;
  26.  
  27. l = 0;
  28. r = n - 1;
  29.  
  30. while (l - r < 0)
  31. {
  32. m = (l + r + 1) / 2;
  33. if (mas[m] <= c)
  34. {
  35. l = m;
  36. }
  37. else
  38. {
  39. r = m - 1;
  40. }
  41. }
  42. if (mas[l] == c)
  43. {
  44.  
  45. max = l+1;
  46. f++;
  47. }
  48.  
  49. l = 0;
  50. r = n - 1;
  51.  
  52. while (l - r < 0)
  53. {
  54. m = (l + r ) / 2;
  55. if (mas[m] < c)
  56. {
  57. l = m + 1;
  58. }
  59. else
  60. {
  61. r = m;
  62. }
  63. }
  64. if (mas[r] == c)
  65. {
  66.  
  67. min = l + 1;
  68.  
  69. }
  70.  
  71. if (f == 0)
  72. {
  73. printf("Not found");
  74. printf("%s", "\n");
  75. }
  76. else
  77. {
  78.  
  79.  
  80. printf("%d", min);
  81. printf(" %d", max);
  82. printf("%s", "\n");
  83. }
  84. f = 0;
  85. }
  86.  
  87.  
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement