01:查找最接近的元素

题目:http://noi.openjudge.cn/ch0111/01/

分析:先找到第一个大于等于x的数的位置,然后再分三种情况处理。

注意:代码中选择的是左闭右开区间,而不是左闭右开区间。

AC代码:

//01:查找最接近的元素
#include
#include
using namespace std;
int a[100000]={0,2,2,2,5,5,100};/*不降序列*/ 
int main(){
	int n=6,T=1000,x;
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	cin>>T;
	while(T--){
		cin>>x;
		int l=1,r=n;//左闭右闭区间 
		int mid; 
		while(l<=r){
			mid=(l+r)/2;
			if(a[mid]>=x)r=mid-1;
			else l=mid+1;
		}
		//第一个大于等于x的数的位置——l 
		//cout<a[l]-x)cout<

 

你可能感兴趣的:(01:查找最接近的元素)