返回题解分享
讨论 / 题解分享/ 帖子详情

数的范围 - 题解

#include <iostream>
using namespace std;

const int N = 1e5 + 10;

int a[N];
int n, q;

int main() {
cin.tie(0);
cout.tie(0);

cin >> n >> q;
for (int i = 1; i <= n; i++) {
    cin >> a[i];
}

while (q--) {
    int x;
    cin >> x;
    int l = 1, r = n;
    int ans;

    while (l <= r) {
        int mid = (l + r) / 2;
        if (a[mid] >= x) {
            ans = mid;
            r = mid - 1;
        } else {
            l = mid + 1;
        }
    }

    if (a[ans] != x) {
        cout << "-1 -1" << endl;
        continue;
    }

    cout << ans - 1 << " ";

    l = 1, r = n, ans = 1;

    while (l <= r) {
        int mid = (l + r) / 2;
        if (a[mid] <= x) {
            ans = mid;
            l = mid + 1;
        } else {
            r = mid - 1;
        }
    }

    cout << ans - 1  << endl;
}

return 0;


}
0 回复 0 转发 0 喜欢 3 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!