1 条题解

  • 0
    @ 2025-11-19 10:12:04
    • 相向双指针
    • a[l] 和 a[r] 哪个离 x 远就删哪个
    #include <bits/stdc++.h>
    using namespace std;
    
    vector<int> solve(vector<int>& a, int k, int x) {
        int n = a.size(), l = 0, r = n - 1;
    
        // a[l] 和 a[r] 哪个离 x 远就删哪个
        while (r - l + 1 > k) {
            if (abs(a[l] - x) > abs(a[r] - x)) l++;
            else r--;
        }
    
        vector<int> ans;
        for (int i = l; i <= r; i++) ans.push_back(a[i]);
        return ans;
    }
    
    int main() {	
        ios::sync_with_stdio(false);
        cin.tie(0); cout.tie(0);
        
        int n, k, x;
        cin >> n >> k >> x;
        vector<int> a(n);
        for (int i = 0; i < n; i++) cin >> a[i];
    
        vector<int> ans = solve(a, k, x);
        for (int i = 0; i < k; i++) cout << ans[i] << " \n"[i == k - 1];
    
        return 0;
    }
    
    • 1

    信息

    ID
    184
    时间
    100ms
    内存
    32MiB
    难度
    4
    标签
    递交数
    55
    已通过
    28
    上传者