#include #include #include #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;
描述在一个非降序列中查找与给定值最接近的元素。输入描述第一行包含一个整数n为非降序列长度。1 ≤ n ≤ 100000。第二行包含n个整数为非降序列各元素。所有元素的大小均在0-1000000000之间。第三行包含一个整数m为要询问的给定值个数。1 ≤ m ≤ 10000。接下来m行每行一个整数为要询问最接近元素的给定值。所有给定值的大小均在0-1000000000之间。输出描述m行每行一个整数为

原文地址: https://www.cveoy.top/t/topic/iOBk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录