早教吧作业答案频道 -->其他-->
代码问题!在一个升序排列的整数数字序列中查找,并返回相应的查找结果。输入每个测试用例由多行组成,第一行是两个整数n和m,其中,1
题目详情
代码问题!
在一个升序排列的整数数字序列中查找,并返回相应的查找结果。
输入
每个测试用例由多行组成,第一行是两个整数n和m,其中,1<=n,m<=1000000。
自第二行起一共有n+m个整数,其中前面n个整数代表升序排列的有序序列,随后的m个整数是待查询的数。n+m个整数的取值在范围1到10^12(10的12次方)之间。
输出
对于每个待查询的数,如果在有序序列中则输出"yes",否则输出"no",每行输出一个查询结果。
样例输入
5 3
6 23 45 56 586
33 66 6
样例输出
no
no
yes
该怎么写,要优化下下
在一个升序排列的整数数字序列中查找,并返回相应的查找结果。
输入
每个测试用例由多行组成,第一行是两个整数n和m,其中,1<=n,m<=1000000。
自第二行起一共有n+m个整数,其中前面n个整数代表升序排列的有序序列,随后的m个整数是待查询的数。n+m个整数的取值在范围1到10^12(10的12次方)之间。
输出
对于每个待查询的数,如果在有序序列中则输出"yes",否则输出"no",每行输出一个查询结果。
样例输入
5 3
6 23 45 56 586
33 66 6
样例输出
no
no
yes
该怎么写,要优化下下
▼优质解答
答案和解析
//hipi亲自测试通过,供参考。时间优化已经做到。
//输入 0 0 退出
#include<stdio.h>
#include<algorithm>
using namespace std;
long a[100],b[1000001],num;
int main()
{
int n,m,i,j,left,right,mid,flag;
while(scanf("%d %d",&n,&m)!=EOF)
{
if(!n&&!m) break;
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=1;i<=m;i++)
scanf("%d",&b[i]);
for(i=0;i<m;i++)
{
num=b[i+1];
left=1;right=n;
flag=0;mid=0;
while(left<=right)
{
mid=(right+left)/2;
if(a[mid]>num) right=mid-1;
else if(a[mid]<num) left=mid+1;
else if(a[mid]==num) {flag=1;break;}
}
if(flag)
printf("yes\n");
else printf("no\n");
}
}
return 0;
}
看了代码问题!在一个升序排列的整数...的网友还看了以下:
观察下列等式:4×1=2的平方-0的平方,4×2=3的平方-1的平方,4×3=4的平方-2的平方… 2020-04-27 …
某化学兴趣小组利用以下各装置连接成一整套装置,探究氯气与氨气之间的反应.其中D为纯净干燥的氯气与纯 2020-05-12 …
在显微镜下观察根尖分生区,其细胞特点是?A.细胞大,排列不整齐B.细胞小,排列整齐C在显微镜下观察 2020-05-13 …
生物膜系统是细胞膜、细胞器膜和核膜等构成的整体.生物膜系统与细胞代谢和细胞通讯密切相关.下列有关说 2020-05-14 …
我目前拥有个基因的完整序列,想将核酸序列和蛋白质序列整理在一起,该用什么软件?就是想做成像下面的这 2020-05-17 …
设数列A:a1,a2,…,aN(N≥2).如果对小于n(2≤n≤N)的每个正整数k都有ak<an, 2020-05-17 …
设L为单链表(带头结点),其中每个结点由一个整数域data和指针域next组成,……设L为单链表( 2020-05-17 …
判断下列句子是否完整,完整的加上标点符号,不完整的补充完整。(1)老师一再嘱咐我们(2)什么时候开 2020-06-19 …
acm简单的问题一直wronganswer有一些三个整数构成的整数群,它的结构是:第一行整数N表示 2020-06-20 …
把下面句子中画线的部分改写成整句(整句就是排列在一起的一队或一组结构相同或相似的句子)。没过多久, 2020-06-20 …