Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <fstream>
  4. using namespace std;
  5. int lowerBound(vector<int> a, int k, int n)
  6. {
  7. int l = -1, r = n, m;
  8. while (l < r - 1)
  9. {
  10. m = (l + r) / 2;
  11. if (a[m] < k)
  12. l = m;
  13. else
  14. r = m;
  15. }
  16. if (r < n && a[r] == k)
  17. return r + 1;
  18. else return -1;
  19. }
  20. int upperBound(vector<int> a, int k, int n)
  21. {
  22. int l = -1, r = n, m;
  23. while (l < r - 1)
  24. {
  25. m = (l + r) / 2;
  26. if (a[m] <= k)
  27. l = m;
  28. else
  29. r = m;
  30. }
  31. if (l < n && a[l] == k)
  32. return l + 1;
  33. else return -1;
  34. }
  35. int main()
  36. {
  37. ifstream in("binsearch.in");
  38. ofstream out("binsearch.out");
  39. ios::sync_with_stdio(false);
  40. int n, m, k, l, r;
  41. cin >> n;
  42. vector<int> a(n);
  43. for (int i = 0; i < n; i++)
  44. cin >> a[i];
  45. cin >> m;
  46. for (int i = 0; i < m; i++)
  47. {
  48. cin >> k;
  49. l = lowerBound(a, k, n);
  50. r = upperBound(a, k, n);
  51. cout << l << " " << r << "\n";
  52. }
  53.  
  54. //cin >> l;
  55. return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement