Advertisement
kxcoze

right_left_binsearch_c++

Dec 8th, 2019
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.98 KB | None | 0 0
  1. #include <bits/stdc++.h>  
  2.  
  3. #define pb push_back
  4.  
  5. using namespace std;    
  6.  
  7. void out(vector <int> &a) {
  8.     for (auto i : a)
  9.         cout << i << endl;
  10. }
  11.  
  12. int main() {        
  13.     int n, k;    
  14.     cin >> n >> k;    
  15.     vector <int> N(n), K(k);    
  16.        
  17.     for (int i = 0; i < n; i++)    
  18.         cin >> N[i];    
  19.     for (int i = 0; i < k; i++)    
  20.         cin >> K[i];    
  21.        
  22.     for (auto t : K) {    
  23.         //left binary search    
  24.         int t1, l = 0, r = n - 1, m;    
  25.         while (l != r) {    
  26.             m = (l+r)/2;    
  27.             N[m] < t ? l = m+1 : r = m;    
  28.         }    
  29.         if (N[l] == t) {t1 = l+1; cout << l+1 << ' ';}    
  30.         else cout << 0 << endl;    
  31.            
  32.         //right binary search
  33.         int l1 = -1, r1 = n;
  34.         while (r1 - l1 > 1) {
  35.             m = (l1+r1)/2;
  36.             N[m] <= t ? l1 = m : r1 = m;
  37.         }
  38.         if (N[r1] == t && t1 != 0) cout << r1 << endl;
  39.     }
  40.     return 0;    
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement