lower_bound(begin, end, num)
函数返回第一个大于或等于num的指针,如果不存在返回end,使用int pos = lower_bound(begin, end, num) - begin;
可以查找大于或等于num的第一个位置。
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN = 1e4 + 10;
int main() {
int n, q, x, a[MAXN], kace = 0;
while (scanf("%d%d", &n, &q) == 2 && n) {
printf("CASE# %d:\n", ++kace);
for (int i = 0; i < n; ++i) {
scanf("%d", &a[i]);
}
sort(a, a+n);
while (q--) {
scanf("%d", &x);
int p = lower_bound(a, a+n, x) - a;
if (a[p] == x) {
printf("%d found at %d\n", x, p+1);
} else {
printf("%d not found\n", x);
}
}
}
return 0;
}