1 条题解

  • 0
    @ 2026-9-30 12:44:46

    C++ :

    
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    static long long a[100005];
    int main(){
        int n;
        if(scanf("%d", &n) != 1) return 0;
        for(int i = 0; i < n; i++) scanf("%lld", &a[i]);
        sort(a, a + n);
        int m;
        if(scanf("%d", &m) != 1) return 0;
        while(m--){
            long long x;
            scanf("%lld", &x);
            int p = (int)(lower_bound(a, a + n, x) - a);   /* 第一个 >= x 的下标 */
            long long best;
            if(p == 0) best = a[0];
            else if(p == n) best = a[n - 1];
            else {
                long long lo = a[p - 1], hi = a[p];
                best = (x - lo <= hi - x) ? lo : hi;       /* 距离相同取较小 */
            }
            printf("%lld\n", best);
        }
        return 0;
    }
    
    
    • 1

    信息

    ID
    2695
    时间
    1000ms
    内存
    256MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者