#include"bits/stdc++.h"
using namespace std;
int s[105];
int n,a;
//ss函数 返回的是查找数等于或者大于的第一个数
int ss(int x){
int l = 1 , r = n;
int mid = (l+r)/2;
while(l<=r)
{
if(s[mid] < x){
l=mid+1;
}else if(s[mid] > x){
r=mid-1;
}else{
return mid;
}
mid = (l+r)/2;
}
return l;
}
int main()
{
while(cin >> n)
{
for(int i=1;i<=n;i++) cin >> s[i];
cin >> a;
cout << ss(a) << " " << s[ss(a)] << endl;
// 二分函数 lower_bound(),upper_bound()
/* lower_bound(起始地址,结束地址,要查找的数值)
返回第一个(大于等于)所要查找的元素的地址
适合求一个数组里比该数小的个数
upper_bound(起始地址,结束地址,要查找的数值)
返回第一个(大于)所要查找的元素的地址
适合求一个数组里比该个数大的个数 */
int j = lower_bound(s+1,s+1+n,a)-s;
int k = upper_bound(s+1,s+1+n,a)-s;
cout << j <<" " << s[j] << " " << k << " " << s[k] << endl;
}
return 0;
}
二分模板 = - =
猜你喜欢
转载自blog.csdn.net/weixin_53013914/article/details/120490773
今日推荐
周排行