fork download
  1. #include <iostream>
  2.  
  3. int upperBound(int* array, int lo, int hi, int key) {
  4. int low = lo-1, high = hi;
  5. while (low+1 != high)
  6. {
  7. int mid = (low+high) >> 1;
  8. if (array[mid]> key) high=mid;
  9. else low=mid;
  10. }
  11. int p = low;
  12. if ( p >= hi || array[p] != key )
  13. p=-1;//no key found
  14. return p;
  15. }
  16.  
  17. int main() {
  18. int arr[2] = {2, 3};
  19. int lo = 1;
  20. int hi = (sizeof arr / sizeof *arr);
  21. int key = 3;
  22. std::cout << upperBound(arr, lo, hi, key) << std::endl;
  23. return 0;
  24. }
Success #stdin #stdout 0s 15232KB
stdin
Standard input is empty
stdout
1