Advertisement
Guest User

Untitled

a guest
Apr 29th, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. #include <cstdio>
  2. #include <algorithm>
  3.  
  4. int arr[100000];
  5. int N, M;
  6.  
  7. int binarySearchLow(int bound) {
  8.     int start = 0, end = N-1, mid, save;
  9.     while (start <= end) {
  10.         mid = (start + end) / 2;
  11.         if (arr[mid] >= bound) {
  12.             save = mid;
  13.             end = mid - 1;
  14.         }
  15.         else {
  16.             start = mid + 1;
  17.         }
  18.     }
  19.     return save;
  20. }
  21.  
  22.  
  23. int binarySearchHigh(int bound) {
  24.     int start = 0, end = N - 1, mid, save;
  25.     while (start <= end) {
  26.         mid = (start + end) / 2;
  27.         if (arr[mid] <= bound) {
  28.             save = mid;
  29.             start = mid + 1;
  30.         }
  31.         else {
  32.             end = mid - 1;
  33.         }
  34.     }
  35.     return save;
  36. }
  37. int main()
  38. {
  39.     scanf("%d", &N);
  40.     for (int i = 0; i < N; i++) {
  41.         scanf("%d", &arr[i]);
  42.     }
  43.     scanf("%d", &M);
  44.     int lowBound, highBound, lowIndex, highIndex;
  45.     for (int i = 0; i < M; i++) {
  46.         scanf("%d %d", &lowBound, &highBound);
  47.         lowIndex = binarySearchLow(lowBound);
  48.         highIndex = binarySearchHigh(highBound);
  49.         printf("%d\n", highIndex - lowIndex + 1);
  50.     }
  51.     return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement