example 5-1
第一次写C++,还是有点不熟悉...本题还是用了强大的C++库函数,有直接的排序函数,不需要像C一样自己写 cmp 的快排函数;其次是查找,这里用了 lower_bound 函数,它返回第一个大于等于 x 的位置,因此本题得解,代码如下:
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 10000;
int main(void)
{
int n, q, x, a[maxn], kase = 0;
while (scanf("%d%d", &n, &q) == 2 && n) {
printf("CASE# %d:\n", ++kase);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
getchar();
}
sort(a, a+n);
while (q--) {
scanf("%d", &x);
getchar();
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;
}