23暑期vj第六次比赛E - Counting 2

ttyy0915 / 2023-08-10 / 原文

题目>>

题意:给出10^5个人的身高(1 -- 109),并进行105次询问。每次询问高于指定身高的人数。

思路:做题时想到用二分了,但是没敢做,还是对二分掌握得不熟悉,该题直接进行简单二分即可。

点击查看代码
#include<bits/stdc++.h>
using namespace std;

const int maxn = 1e6 + 5;
int n,q,x;
int a[maxn];

int main(){
	cin>>n>>q;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+n+1);
	while(q--){
		cin>>x;
		int l=1,r=n,ans=0;
		while(l<=r){
			int mid=l+r>>1;
			if(a[mid]>=x){
				ans=n-mid+1;
				r=mid-1;
			}
			else
				l=mid+1;
		}
		cout<<ans<<endl;
	}

	return 0;
}