1 条题解

  • 0
    @ 2025-10-3 22:08:03

    奇怪的写法,正常是全用 vector 排序的,用了 priority_queuebitset

    #include <bits/stdc++.h>
    using namespace std;
    constexpr int N = 2e5 + 10;
    
    int main() {
        int n;
        cin >> n;
        priority_queue<int, vector<int>, greater<>> odd, even;
        bitset<N> isodd;
        for (int i = 0; i < n; ++i) {
            int m;
            cin >> m;
            if (m & 1) {
                isodd[i] = true;
                odd.push(m);
            } else {
                even.push(m);
            }
        }
        for (int i = 0; i < n; ++i) {
            if (isodd[i]) {
                cout << odd.top() << ' ';
                odd.pop();
            } else {
                cout << even.top() << ' ';
                even.pop();
            }
        }
        return 0;
    }
    
    • 1

    信息

    ID
    409
    时间
    2000ms
    内存
    512MiB
    难度
    10
    标签
    (无)
    递交数
    3
    已通过
    1
    上传者