【算法】二分789. 数的范围

题目

数的范围

思路

代码

#include 
using namespace std;
#define N 100010
int n;
int q[N];
main()
{
    int m;
    cin >> n >> m;
    for (int i = 0; i < n; i ++)
    {
       cin >> q[i];
    }
    while (m --)
    {
        int x;
        cin >> x;
        int l = 0, r = n - 1;
        while (l < r)
        {
            int mid = l + r >> 1;
            if (q[mid] >= x) r = mid;
            else l = mid + 1;
        }
        if (q[l] != x)
            cout << -1 << " " << -1 << endl;
        else
        {
            cout << l << " " ;
            
            int l = 0, r = n - 1;
            while (l < r)
            {
                int mid = l + r + 1 >> 1;
                if (q[mid] <= x) l = mid;
                else r = mid - 1;
            }
            
        cout << l << endl;
        }
    }
}

你可能感兴趣的:(算法,c++,开发语言)