题目描述
给出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
看下一