题解 | 【模板】整数域二分

【模板】整数域二分

https://www.nowcoder.com/practice/d483ab6bf19245518730a75c6ea108ae

#define _CRT_SECURE_NO_WARNINGS
#include <algorithm>
#include <vector>
using namespace std;

int main() {
    int n, p;//n是数组数量,p是操作次数
    scanf("%d%d", &n, &p);
    vector<int> arr(n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    sort(arr.begin(), arr.end());
    for (int i = 0; i < p; i++) {
        int start, end;
        scanf("%d%d", &start, &end);
        // 二分查找:找第一个>=start的位置,第一个>end的位置
        auto left = lower_bound(arr.begin(), arr.end(), start);
        auto right = upper_bound(arr.begin(), arr.end(), end);
        // 差值就是区间内元素数量
        printf("%d\n", (int)(right - left));
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务