
参考:ACM紫书 第五章 P108 【排序与检索】

下面的代码中有些 提示性输出,想Ac 需删除提示性输出语句,读者自行修改。
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 10000;
int main(void)
{
int n,q,numarr[maxn],i,x,p,Case=0;
while(scanf("%d%d",&n,&q)==2 && n)
{
printf("CASE# %d:
",++Case);
for(i=0; i<n; i++)
{
scanf("%d",&numarr[i]);
}
sort(numarr,numarr+n);
while(q--)
{
scanf("%d",&x);
printf("%d--%p
",*numarr,numarr);
printf("%d--%p
",*lower_bound(numarr,numarr+n,x),lower_bound(numarr,numarr+n,x));
p=lower_bound(numarr,numarr+n,x)- numarr;
printf("p = %d
",p);
if(numarr[p]==x)printf("%d found at %d
",x,p+1);
else printf("%d not found
",x);
}
}
return 0;
}