题意:
解法:
发现每组询问其实就是给定x,计算序列中有多少个数<=x.
发现序列中的数不是很大,直接桶排序+前缀和预处理出a[x]为<=x的数有多少个.
每次询问O(1)输出即可.
code:
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxm=2e6+5;
int a[maxm];
int n,q;
void solve(){
cin>>n;
for(int i=1;i<=n;i++){
int x;cin>>x;
a[x]++;
}
for(int i=1;i<maxm;i++)a[i]+=a[i-1];
cin>>q;
while(q--){
int x;cin>>x;
x=min(maxm-1,x);
cout<<a[x]<<endl;
}
}
signed main(){
ios::sync_with_stdio(0);
solve();
return 0;
}