问题标题: 酷町堂:1754 序列询问

0
0
已解决
唐维哲
唐维哲
修练者
修练者
#include<iostream>
#include<cstdio>
using namespace std;
int a[100010];
int main()
{
	int m,n,b;
	cin>>m>>n;
	for(int i=1;i<=m;i++) cin>>a[i];
	for(int i=1;i<=n;i++)
	{
		cin>>b;
		if(a[1]>b) 
		{
			cout<<-1<<endl;
		}
		else
		{
			int left=1,right=m,mid;
			while(left<=right)
			{
				mid=(left+right)/2;
				if(a[mid]>b) right=mid-1;
				else left=mid+1;
			}
			cout<<a[right]<<endl;
	    }
	}
	return 0;
}

 

唐维哲在2019-02-12 15:03:53追加了内容

满分代码


0
已采纳
施巧稚
施巧稚
初级守护
初级守护

用二分查找

二分核心代码:

mid=(i+j)/2;
                    if(a[mid]>m) 
                        j=mid;
                    else if(a[mid]<=m) 
                        i=mid+1;

也可以用桶排序

0
我要回答