pastebin

Paste Search Dynamic
Recent pastes
first vector
  1. #include <iostream>
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5.  
  6.  
  7.  
  8. int first(vector<int> &arr, int low, int high, int k) {
  9.     if (high >= low) {
  10.         int mid = low + (high - low) / 2;
  11.         if ((mid == 0 && arr[mid] == k) || (k > arr[mid - 1] && arr[mid] == k)) {
  12.             return mid;
  13.         } else if (arr[mid] < k) {
  14.             return first(arr, mid + 1, high, k);
  15.         } else {
  16.             return first(arr, low, mid - 1, k);
  17.         }
  18.     }
  19.     return -1;
  20. }
  21.  
  22.  
  23. int last(vector<int> &arr, int low, int high, int k) {
  24.     if (high >= low) {
  25.         int mid = low + (high - low) / 2;
  26.         if ((mid == arr.size() - 1 && arr[mid] == k) || (k < arr[mid + 1] && arr[mid] == k)) {
  27.             return mid;
  28.         } else if (arr[mid] > k) {
  29.             return last(arr, low, mid - 1, k);
  30.         } else {
  31.             return last(arr, mid + 1, high, k);
  32.         }
  33.     }
  34.     return -1;
  35. }
  36.  
  37.  
  38.  
  39.  
  40. int main() {
  41.         vector <int> arr = {1, 2, 2, 2, 3, 4, 4, 5, 6, 7, 8, 9};
  42.         int k = 2;
  43.  
  44.         cout << first(arr, 0, arr.size()-1, k) << endl;
  45.         cout << last(arr, 0, arr.size()-1, k) << endl;
  46.  
  47.         return 0;
  48. }
Parsed in 0.015 seconds