#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;
}
  1. 使用相应函数之前必须先把数组从小到大排序。

  2. 接下来我们使用lower_bound函数 和 upper_bound函数找到第一个大于等于 x 的和第一个大于 x 的位置,算出下标,赋值给p1和p2。

  3. 接下来输出a数组p1位置的数,不过要注意,如果没有找到结果,函数返回的是尾位置,这里会是a + n,算出来的p1的值是n,这个需要特判。 如果p1不等于n就输出a[p1],否则输出"No",输出以后换行。

  4. 最后输出a数组p2位置的数,也要注意,如果没有找到结果,函数返回的是尾位置,这里会是a + n,算出来的p2的值是n,这个需要特判。

    如果p2不等于n就输出a[p2],否则输出"No",输出以后换行。