Advertisement
uzimane_

Нахождение наименьшего недостающего элемента из отсортирован

Jul 10th, 2020
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. int mas[10000000];
  8. bool boo[10000000];
  9. int ans = 0;
  10.  
  11. int search(int* mas, int l, int r)
  12. {
  13. cout.flush();
  14.  
  15. int h, zl, zr;
  16.  
  17. if (r < l)
  18. {
  19. return (l-1);
  20. }
  21.  
  22. int mid = (l + r) / 2;
  23.  
  24. if (boo[mid] == false)
  25. {
  26. cout << "? " << mid << endl;
  27. cin >> h;
  28. mas[mid] = h;
  29. boo[mid] = true;
  30. }
  31. else
  32. h = mas[mid];
  33.  
  34. if (mas[mid] >= mid)
  35. return search(mas, l, mid - 1);
  36. else
  37. return search(mas, mid + 1, r);
  38.  
  39. }
  40.  
  41. int main()
  42. {
  43.  
  44. int l, r, m;
  45. int n;
  46. cin >> n;
  47. int k;
  48. l = 1;
  49. r = n;
  50. for (int i = 1; i <= n + 1; i++)
  51. {
  52. mas[i] = -1;
  53. }
  54. for (int i = 0; i < n * 2; i++)
  55. {
  56. boo[i] = false;
  57. }
  58.  
  59. cout << "! " << search(mas, l, r) << endl;
  60.  
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement