关于#c++#的二分查找问题,如何解决?

题目描述
给出n个有序的正整数 其中 n<=105 , ai<=109
有m 个查询(m<=105),每次查询输出刚好大于等于x的位置,不存在大于x的元素输出n+1
输入样例
10 4
16 20 20 40 40 63 70 73 76 79
20
100
65
5
输出样例
2
11
7
1

#include <iostream>
using namespace std;

int find(int nums[], int size, int x) 
{
    int left = 0;
    int right = size - 1;

    while (left <= right) 
    {
        int mid = (left + right) / 2;

        if (nums[mid] >= x) 
        {
            if (mid == 0 || nums[mid-1] < x) 
            {
                return mid + 1;
            } 
            else 
            {
                right = mid - 1;
            }
        } 
        else 
        {
            left = mid + 1;
        }
    }

    return size + 1;
}

int main()
{
    int n, m;
    cin >> n >> m;

    int nums[n];
    for (int i = 0; i < n; i++) 
    {
        cin >> nums[i];
    }

    for (int i = 0; i < m; i++) 
    {
        int x;
        cin >> x;
        int pos = find(nums, n, x);
        cout << pos << endl;
    }

    return 0;
}

https://blog.csdn.net/YoyoHuzeyou/article/details/128639542
看下一