dbarshan

Both Bounds

Jun 21st, 2021 (edited)
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.59 KB | None | 0 0
  1. vector<int> both_bounds(vector<int> &arr, int X)
  2. {
  3.     int N = arr.size();
  4.     int low1 = 0, low2 = 0;
  5.     int high1 = N, high2 = N;
  6.    
  7.     while ((low1<high1)||(low2<high2)) {
  8.         if(low1 < high1){
  9.             int mid1 = low1 + (high1 - low1) / 2;
  10.             if (X <= arr[mid1])
  11.                 high1 = mid1;
  12.             else low1 = mid1 + 1;
  13.         }
  14.        
  15.         if(low2<high2){
  16.             int mid2 = low2 + (high2 - low2) / 2;
  17.             if(X >= arr[mid2])
  18.                 low2 = mid2 + 1;
  19.             else
  20.                 high2 = mid2;
  21.         }
  22.     }
  23.    
  24.     if(low1 < N && arr[low1] < X)
  25.        low1++;
  26.     if(low2 < N && arr[low2] <= X)
  27.        low2++;
  28.    
  29.     return {low1,low2};
  30. }
Add Comment
Please, Sign In to add comment