SuitNdtie

RelexBsearch

Mar 28th, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.84 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<iostream>
  3. #include<algorithm>
  4. using namespace std;
  5. typedef long long int ll;
  6.  
  7. int Bsearch(int l,int r,ll key,pair<ll,int> arr[]){
  8.     int m = (l+r)/2;
  9.     if(arr[m].first == key){
  10.         int j = m;
  11.         while(arr[j-1].first == key){
  12.             j--;
  13.         }
  14.         return arr[j].second;
  15.     }
  16.     if(l > r)return -1;
  17.    
  18.     if(arr[m].first > key){
  19.         return Bsearch(l,m-1,key,arr);
  20.     }else{
  21.         return Bsearch(m+1,r,key,arr);
  22.     }
  23. }
  24.  
  25. int main()
  26. {
  27.     int n;
  28.     scanf("%d",&n);
  29.    
  30.     pair<ll,int> arr[n+1];arr[0] = {-2e9,0};
  31.     for(int i=1;i<=n;i++){
  32.         ll x;
  33.         scanf("%lld",&x);
  34.         arr[i] = {x,i};
  35.     }
  36.     sort(arr+1,arr+n+1);
  37.     ll m;
  38.     scanf("%lld",&m);
  39.    
  40.     for(int i=0;i<m;i++){
  41.         ll key;
  42.         scanf("%lld",&key);
  43.        
  44.         int index = Bsearch(1,n,key,arr);
  45.         if(index != -1){
  46.             printf("%d\n",index);
  47.         }else{
  48.             printf("Not found\n");
  49.         }
  50.     }
  51.     return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment