给一个包含n个数的升序的序列a,m次查询,每次输入一个数k,询问序列中大于等于k的第一个数。 。

2025-06-20 12:04:38
推荐回答(1个)
回答1:

#include 
using namespace std;

int binary_search(int num[], int size, int value) {
if (num[0] >= value) {
return num[0];
}
else if (num[size - 1] < value) {
return -1;
}
int left = 0, right = size - 1;
while (left < right) {
int mid = (left + right) / 2;
if (num[mid] >= value) {
right = mid;
}
else {
left = mid + 1;
}
}
return num[left];
}

int main() {
int n, m;
int num[100000];
while (cin >> n >> m) {
for (int i = 0; i < n; i++) {
cin >> num[i];
}
while (m--) {
int k;
cin >> k;
cout << binary_search(num, n, k) << endl;
}
}
}