freq
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int BSFloor(int arr[], int n, int q){
  5.     int low = 0, high = n-1, ans = -1;
  6.     while(low<=high){
  7.         int mid = (low + high)/2;
  8.         if(arr[mid]<=q){
  9.             ans = mid;
  10.             low = mid + 1;
  11.         }
  12.         else{
  13.             high = mid - 1;
  14.         }
  15.     }
  16.     return ans;
  17. }
  18.  
  19. int BSCeil(int arr[], int n, int q){
  20.     int low = 0, high = n-1, ans = -1;
  21.     while(low<=high){
  22.         int mid = (low + high)/2;
  23.         if(arr[mid]<q){
  24.             low = mid + 1;
  25.         }
  26.         else{
  27.             ans = mid;
  28.             high = mid-1;
  29.         }
  30.     }
  31.     return ans;
  32. }
  33.  
  34. int main(){
  35.     int n;
  36.     cin>>n;
  37.     int arr[n];
  38.     for(int i=0;i<n;i++){
  39.         cin>>arr[i];
  40.     }
  41.     sort(arr, arr+n);
  42.     int Q; cin>>Q;
  43.     while(Q!=0){
  44.         int x; cin>>x;
  45.         int freq;
  46.         int p1 = BSFloor(arr,n,x);
  47.         int p2 = BSCeil(arr,n,x);
  48.  
  49.         if(p1==-1 || p2==-1)
  50.             freq = 0;
  51.         else
  52.             freq = p2 - p1 + 1;
  53.  
  54.         cout<<freq<<endl;
  55.         Q--;
  56.     }
  57.     return 0;
  58. }
Parsed in 0.008 seconds