知识点
关于lower_bound和upper_bpund函数的使用
upper_bound(begin, end, value)
//在从小到大的排好序的数组中,在数组的 [begin, end) 区间中二分查找第一个大于value的数,找到返回该数字的地址,没找到则返回end。
upper_bound(begin, end, value, greater())
//在从大到小的排好序的数组中,在数组的 [begin, end) 区间中二分查找第一个小于value的数,找到返回该数字的地址,没找到则返回end。
lower_bound(begin, end, value)
//在从小到大的排好序的数组中,在数组的 [begin, end) 区间中二分查找第一个大于等于value的数,找到返回该数字的地址,没找到则返回end。
lower_bound(begin, end, value, greater())
//在从大到小的排好序的数组中,在数组的 [begin, end) 区间中二分查找第一个小于等于value的数,找到返回该数字的地址,没找到则返回end。
声明以上介绍引自CSDN博主"寂空_"
如果感兴趣的话我下面已经给出链接 点我
#include <algorithm>
#include <bits/stdc++.h>
#define int long long
using namespace std ;
signed main()
{
ios::sync_with_stdio(false),cin.tie(nullptr) ;
int n,q;
cin >> n >> q;
vector<int>a(n) ;
for(int i = 0;i < n;i++) cin >> a[i] ;
sort(a.begin(),a.end()) ;
while(q--)
{
int l,r;
cin >> l >> r;
auto x = lower_bound(a.begin(), a.end(), l) - a.begin();
auto y = n - ( a.end() - upper_bound(a.begin(), a.end(),r) );
cout << y - x << "\n" ;
}
return 0 ;
}

京公网安备 11010502036488号