Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- vector<int> both_bounds(vector<int> &arr, int X)
- {
- int N = arr.size();
- int low1 = 0, low2 = 0;
- int high1 = N, high2 = N;
- while ((low1<high1)||(low2<high2)) {
- if(low1 < high1){
- int mid1 = low1 + (high1 - low1) / 2;
- if (X <= arr[mid1])
- high1 = mid1;
- else low1 = mid1 + 1;
- }
- if(low2<high2){
- int mid2 = low2 + (high2 - low2) / 2;
- if(X >= arr[mid2])
- low2 = mid2 + 1;
- else
- high2 = mid2;
- }
- }
- if(low1 < N && arr[low1] < X)
- low1++;
- if(low2 < N && arr[low2] <= X)
- low2++;
- return {low1,low2};
- }
Add Comment
Please, Sign In to add comment