给定一个长为N的严格升序序列a(a[0], a[1] ... a[N-1])。有M个询问,每个询问有一个参数x,求最小的i(0<=i<N)使a[i]>x,若不存在则为-1。
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int a[500000];
int main()
{
int n,m;
cin >> n >>m;
for(int i = 0;i < n;i++)
{
cin >> a[i];
}
sort(a,a+n);
for(int i = 1;i <= m;i++)
{
int k;
cin >> k;
int idx = upper_bound(a,a+n,k)-a;
if(idx == n)
{
cout <<-1<<endl;
}
else
{
cout << idx << endl;
}
}
return 0;
}
我写的二分查找为啥t了一组
最后一组数据为N = 10^6,M = 10^5