早教吧作业答案频道 -->其他-->
代码问题!在一个升序排列的整数数字序列中查找,并返回相应的查找结果。输入每个测试用例由多行组成,第一行是两个整数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;
}
看了代码问题!在一个升序排列的整数...的网友还看了以下:
关系模型中,一个关键字A.可由多个任意属性组成B.至多由一个属性组成C.可由一个或多个其值能唯一 2020-05-23 …
A.由其后序遍历序列和中序遍历序列可以构造该二叉树的先序遍历序列B.由其先序遍历序列和后序 2020-05-26 …
有七个数由小到大依次排列,其平均数是38,如果这组数中前四个数的平均数是33有7个数由小到大依次排 2020-06-27 …
有七个数由小到大依次排列,其平均数是38,如果这组数中前四个数的平均数是33有7个数由小到大依次排 2020-07-17 …
某一多肽链由199个氨基酸组成,其分子式为CXHYNAOBS2(A>199,B>200),并且是由 2020-07-18 …
(2011•闵行区一模)某一多肽链由201个氨基酸组成,其分子式为CXHYNAOBS2(A>201 2020-07-18 …
有6支球队进行循环赛,胜者得3分,负者得0分,平局各得1分,比赛结束,各队得分由高到低恰好是等差数列 2020-11-18 …
目前,中国特色社会主义法律体系已经基本形成。已生效的法律有230多部其中绝大多数是改革开放以来由全国 2020-11-27 …
请用所学化学知识解释下列原理(1)通常所说的煤气中毒是指由引起的中毒;(2)服用含Al(OH)3的药 2020-12-03 …
下列有关我国气候的叙述,正确的是()A.我国降水由东南沿海向西北内陆减少,是由纬度位置造成的B.雅鲁 2020-12-15 …