1 条题解

  • 0
    @ 2025-4-13 19:20:40

    C++代码

    #include <iostream>
    #include <deque>
    #include <vector>
    
    using namespace std;
    
    int main() {
        int N;
        cin >> N;
        deque<int> dq;
        for (int i = 0; i < N; ++i) {
            int h;
            cin >> h;
            dq.push_back(h);
        }
        
        vector<int> new_queue;
        
        while (!dq.empty()) {
            int h = dq.front();
            int t = dq.back();
            
            if (h < t) {
                new_queue.push_back(h);
                dq.pop_front();
            } else if (h > t) {
                new_queue.push_back(t);
                dq.pop_back();
            } else {
                bool found = false;
                int len = dq.size();
                for (int i = 1; i < (len - 1) / 2 + 1; ++i) {
                    if (i >= dq.size()) break;
                    int left = dq[i];
                    int right = dq[dq.size() - 1 - i];
                    if (left < right) {
                        new_queue.push_back(h);
                        dq.pop_front();
                        found = true;
                        break;
                    } else if (left > right) {
                        new_queue.push_back(t);
                        dq.pop_back();
                        found = true;
                        break;
                    }
                }
                if (!found) {
                    new_queue.push_back(h);
                    dq.pop_front();
                }
            }
        }
        
        for (int i = 0; i < new_queue.size(); ++i) {
            if (i > 0) cout << " ";
            cout << new_queue[i];
        }
        cout << endl;
        
        return 0;
    }
    

    信息

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