1 条题解
-
0
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; }
- 1
信息
- ID
- 2759
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者