可以使用 upper_bound 快速实现二分
#include <bits/stdc++.h>
using namespace std;
int n, m;
int a[100005];
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
while (m--) {
int x;
cin >> x;
if (a[n] <= x) {
cout << "-1" << endl;
} else {
cout << upper_bound(a + 1, a + n + 1, x) - a << endl;
}
}
return 0;
}
暂无评论