1 条题解

  • 0
    @ 2026-3-3 15:50:11
    #include <bits/stdc++.h>
    using namespace std;
    using ll = long long;
    struct num_idx
    {
        int num;
        int idx;
    };
    bool num_comp(const num_idx& lhs, const num_idx& rhs)
    {
        if (lhs.num != rhs.num) return lhs.num < rhs.num;
        return lhs.idx < rhs.idx;
    }
    
    void solve() {
        int n;
        cin >> n;
        vector<num_idx> nums(n);
        int mid = (n - 1) / 2;
    
        for (int i = 0; i < n; i++)
        {
            cin >> nums[i].num;
            nums[i].idx = i;
        }
    
        sort(nums.begin(), nums.end(), num_comp);
        int left_med = nums[n/2].num;
        int right_med = nums[n/2-1].num;
        vector<int> answers(n);
        for (int i = 0; i < n / 2; i++)
        {
            answers[nums[i].idx] = left_med;
        }
        for (int i = n / 2; i < n; i++)
        {
            answers[nums[i].idx] = right_med;
        }
        for (int answer : answers) cout << answer << "\n";
    }
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        solve();
        return 0;
    }
    
    • 1

    信息

    ID
    9381
    时间
    2000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    2
    已通过
    1
    上传者