789. 数的范围

在这里插入图片描述
在这里插入图片描述
思路:
经典二分

代码:

# include<iostream>
using namespace std;

const int N = 100010;
int s[N];
int n,k;

int main()
{
    
    
    cin >> n >> k;
    for(int i = 0;i < n;i++)
    {
    
    
        scanf("%d",&s[i]);
    }
    while(k--)
    {
    
    
        int x;
        scanf("%d",&x);
        int l = 0,r = n - 1;
        while(l < r)
        {
    
    
            int mid = l + r >> 1;
            if(s[mid] >= x) r = mid;
            else l = mid + 1;
          
        }
        if(s[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(s[mid] <= x) l = mid;
                else r = mid - 1;
            }
            cout << l << endl;
        }
    }
    
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_45812180/article/details/115253220
789