描述在一个非降序列中查找与给定值最接近的元素。输入描述第一行包含一个整数n为非降序列长度。1 ≤ n ≤ 100000。第二行包含n个整数为非降序列各元素。所有元素的大小均在0-1000000000之间。第三行包含一个整数m为要询问的给定值个数。1 ≤ m ≤ 10000。接下来m行每行一个整数为要询问最接近元素的给定值。所有给定值的大小均在0-1000000000之间。输出描述m行每行一个整数为
#include
using namespace std;
int main() { int n; cin >> n;
vector<int> sequence(n);
for (int i = 0; i < n; i++) {
cin >> sequence[i];
}
int m;
cin >> m;
vector<int> queries(m);
for (int i = 0; i < m; i++) {
cin >> queries[i];
}
for (int i = 0; i < m; i++) {
int target = queries[i];
int left = 0;
int right = n - 1;
int closest = INT_MAX;
while (left <= right) {
int mid = left + (right - left) / 2;
if (sequence[mid] == target) {
closest = target;
break;
} else if (sequence[mid] < target) {
closest = sequence[mid];
left = mid + 1;
} else {
closest = sequence[mid];
right = mid - 1;
}
}
cout << closest << endl;
}
return 0;
原文地址: https://www.cveoy.top/t/topic/iOBk 著作权归作者所有。请勿转载和采集!