题解
2023-09-29 18:26:30
发布于:安徽
13阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int n,m,x;
int a[100005];
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+1+n); //先排序
cin>>m;
//输入
while(m--) //m次询问
{
cin>>x;//输入
if(x>=a[n]){
cout<<0<<endl;
continue;
}
if(x<a[1]){
cout<<n<<endl;
continue;
} //两个特判 可以省一点时间
//经典二分模板
int l=1,r=n;
while(l<r)
{
int mid=(l+r+1)/2;
if(a[mid]<=x) l=mid;
else r=mid-1;
}
cout<<n-l<<endl; //求的是比x大的有多少
}
return 0;
}
这里空空如也
有帮助,赞一个