Submission #18402693
Source Code Expand
#include <atcoder/segtree>
#include <iostream>
#include <vector>
#include <queue>
template <class T>
using MinHeap = std::priority_queue<T, std::vector<T>, std::greater<T>>;
using namespace std;
struct Data {
int val, idx;
explicit Data(int val, int idx) : val(val), idx(idx) {}
static Data op(Data a, Data b) { return a.val <= b.val ? a : b; }
static Data e() { return Data(1 << 30, -1); }
};
void solve() {
int n;
cin >> n;
atcoder::segtree<Data, Data::op, Data::e> eseg(n), oseg(n);
for (int i = 0; i < n; ++i) {
int p;
cin >> p;
(i % 2 == 0 ? eseg : oseg).set(i, Data(p, i));
}
vector<int> ans;
MinHeap<tuple<int, int, int>> heap;
// val, [l, r)
// 区間[l, r)を(空でなければ)最小値と共に追加
auto push = [&](int l, int r) {
if (r <= l) return;
auto d = (l % 2 == 0 ? eseg : oseg).prod(l, r);
heap.emplace(d.val, l, r);
};
push(0, n);
while (!heap.empty()) {
auto [v, l, r] = heap.top();
heap.pop();
auto x = (l % 2 == 0 ? eseg : oseg).prod(l, r);
auto lr = x.idx;
ans.push_back(x.val);
auto y = (l % 2 == 0 ? oseg : eseg).prod(lr, r);
auto rl = y.idx;
ans.push_back(y.val);
push(l, lr);
push(lr + 1, rl);
push(rl + 1, r);
}
for (auto p : ans) cout << p << " ";
cout << "\n";
}
int main() {
std::cin.tie(nullptr);
std::ios::sync_with_stdio(false);
solve();
return 0;
}
Submission Info
| Submission Time |
|
| Task |
E - Young Maids |
| User |
Tiramister |
| Language |
C++ (GCC 9.2.1) |
| Score |
800 |
| Code Size |
1608 Byte |
| Status |
AC |
| Exec Time |
90 ms |
| Memory |
13784 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
800 / 800 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
0_00.txt, 0_01.txt, 0_02.txt |
| All |
0_00.txt, 0_01.txt, 0_02.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 0_00.txt |
AC |
5 ms |
3472 KiB |
| 0_01.txt |
AC |
2 ms |
3544 KiB |
| 0_02.txt |
AC |
1 ms |
3596 KiB |
| 1_00.txt |
AC |
2 ms |
3536 KiB |
| 1_01.txt |
AC |
2 ms |
3548 KiB |
| 1_02.txt |
AC |
87 ms |
13064 KiB |
| 1_03.txt |
AC |
89 ms |
13076 KiB |
| 1_04.txt |
AC |
89 ms |
13244 KiB |
| 1_05.txt |
AC |
89 ms |
13536 KiB |
| 1_06.txt |
AC |
89 ms |
13604 KiB |
| 1_07.txt |
AC |
87 ms |
13660 KiB |
| 1_08.txt |
AC |
90 ms |
13540 KiB |
| 1_09.txt |
AC |
85 ms |
13124 KiB |
| 1_10.txt |
AC |
90 ms |
13124 KiB |
| 1_11.txt |
AC |
84 ms |
13212 KiB |
| 1_12.txt |
AC |
89 ms |
13660 KiB |
| 1_13.txt |
AC |
89 ms |
13660 KiB |
| 1_14.txt |
AC |
89 ms |
13776 KiB |
| 1_15.txt |
AC |
90 ms |
13600 KiB |
| 1_16.txt |
AC |
89 ms |
13580 KiB |
| 1_17.txt |
AC |
87 ms |
13752 KiB |
| 1_18.txt |
AC |
89 ms |
13772 KiB |
| 1_19.txt |
AC |
88 ms |
13784 KiB |