成都建网站比较好的公司6,查分网站制作,北京seo实训班学校,南宁百度seo排名公司问题#xff1a;
现有N个大理石#xff0c;每个大理石上写了一个非负整数、首先把各数从小到大排序#xff1b;然后回答Q个问题。每个问题问是否有一个大理石写着某个整数x#xff0c;如果是#xff0c;还要回答哪个大理石上写着x。排序后的大理石从左到右编号为1~N。 (…问题
现有N个大理石每个大理石上写了一个非负整数、首先把各数从小到大排序然后回答Q个问题。每个问题问是否有一个大理石写着某个整数x如果是还要回答哪个大理石上写着x。排序后的大理石从左到右编号为1~N。 (在样例中为了节约篇幅所有大理石的数合并到一行所有问题也合并到一行。)
样例输入 4 1 2 3 5 1 5 5 2 1 3 3 3 1 2 3
样例输出 CASE# 1 5 found at 4 CASE# 2 2 not found 3 found at 3
分析与解答
1.利用sort排序 2.利用lower_bound(a,an,x) 在a[0]到a[n-1]中找大于等于x的第一个位置 注意返回的是个指针如果求第几个元素需要减去a[0]
#includeiostream
#includecstdio
#includealgorithm
using namespace std;
const int maxn10000;int main(){int n,q,k0;while(cinnqn){k;coutCASE# kendl;int a[maxn];for(int i0;in;i){cina[i];}sort(a,an);while(q--){int b;cinb;int plower_bound(a,an,b)-a;//位置相减即为下标if(a[p]b) coutb found at p1endl;else coutb not foundendl;}}
}