#Z1034. [伴随编程使用] lower_bound 和 upper_bound
[伴随编程使用] lower_bound 和 upper_bound
在数组中找到 大于等于 x 的最小的数 和 大于 x 的最小的数。
相关的输入已经写好了,有 n 个数,读入以后,再读入要查找的数 x 。
#include <iostream>
#include <algorithm>
using namespace std;
int a[1005];
int main() {
int n, x, p1, p2;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
cin >> x;
return 0;
}
-
使用相应函数之前必须先把数组从小到大排序。
-
接下来我们使用lower_bound函数 和 upper_bound函数找到第一个大于等于 x 的和第一个大于 x 的位置,算出下标,赋值给p1和p2。
-
接下来输出a数组p1位置的数,不过要注意,如果没有找到结果,函数返回的是尾位置,这里会是a + n,算出来的p1的值是n,这个需要特判。 如果p1不等于n就输出a[p1],否则输出"No",输出以后换行。
-
最后输出a数组p2位置的数,也要注意,如果没有找到结果,函数返回的是尾位置,这里会是a + n,算出来的p2的值是n,这个需要特判。
如果p2不等于n就输出a[p2],否则输出"No",输出以后换行。