给定一个长为N的严格升序序列a(a0,a1⋅⋅⋅aN−1)。有M个询问,每个询问有一个参数x,求最大的i(0≤i<N)使ai<x,若不存在则为−1。
样例输入
3 5
1
3
3
0
1
2
3
4
样例输出
-1
-1
0
0
2
我的程序输出
-1
-1
-1
-1
2
#include <iostream>
using namespace std;
int n, m;
int a[1000005];
int main()
{
ios::sync_with_stdio(false);
cin >> n >> m;
for (int i = 0; i < n; i++)
cin >> a[i];
for (int i = 1; i <= m; i++)
{
int l = 0, r = n - 1, v, ans = -1;
cin >> v;
while (l < r)
{
int p = (l + r + 1) >> 1;
if (a[p] < v) l = p, ans = p;
else r = p - 1;
}
cout << ans << endl;
}
return 0;
}