题解 | 【模板】二分

#include <algorithm>
#include <iostream>
using namespace std;

using ll = long long;
const ll N = 1e5 + 5;
int main() {
    int n, q, op;
    cin >> n >> q;
    ll l, r, x, idx, a[N] = {0};
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    while (q--) {
        cin >> op >> l >> r >> x;
        if(op%2){// 1 or 3
            idx = lower_bound(a + l, a + r, x) - a;
        }
        else {
            idx = upper_bound(a + l, a + r, x) - a;
        }

        if((op-1)/2)// 3 or 4
            idx --;

        if(idx >= l && idx < r)//左闭右开
            cout << a[idx] << endl;
        else
            cout << -1 << endl;
    }
    return 0;
    }

全部评论

相关推荐

02-09 10:51
已编辑
门头沟学院 Java
Java抽象带篮子:考完研冲春招可以看看我的置顶帖子,里面写了怎么写简历,怎么包装实习经历,还有八股笔记资料和速成的高质量项目话术呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务