test/cpv/library-checker-datastructure/ordered_set.pbds.cpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | // competitive-verifier: PROBLEM https://judge.yosupo.jp/problem/ordered_set | ||
| 2 | #include "../../../src/io/fastin/lib.hpp" | ||
| 3 | #include "../../../src/io/fastout/lib.hpp" | ||
| 4 | |||
| 5 | using namespace tifa_libs; | ||
| 6 | 37 | int main() { | |
| 7 | u32 n, q; | ||
| 8 | 37 | fin_uint >> n >> q; | |
| 9 |
1/2✓ Branch 1 taken 37 times.
✗ Branch 2 not taken.
|
37 | __gnu_pbds::tree<u32, __gnu_pbds::null_type, std::less<u32>, __gnu_pbds::rb_tree_tag, __gnu_pbds::tree_order_statistics_node_update> tr; |
| 10 |
2/2✓ Branch 0 taken 8006030 times.
✓ Branch 1 taken 37 times.
|
8006067 | flt_ (u32, i, 0, n, x) { |
| 11 | 8006030 | fin_uint >> x; | |
| 12 |
1/2✓ Branch 1 taken 8006030 times.
✗ Branch 2 not taken.
|
8006030 | tr.insert(x); |
| 13 | } | ||
| 14 |
2/2✓ Branch 0 taken 17500021 times.
✓ Branch 1 taken 37 times.
|
17500058 | flt_ (u32, i, 0, q, t, x) { |
| 15 | 17500021 | fin_uint >> t >> x; | |
| 16 |
1/2✓ Branch 1 taken 17500021 times.
✗ Branch 2 not taken.
|
17500021 | auto lb = tr.lower_bound(x); |
| 17 |
6/7✓ Branch 0 taken 2982589 times.
✓ Branch 1 taken 2587862 times.
✓ Branch 2 taken 2981723 times.
✓ Branch 3 taken 2982072 times.
✓ Branch 4 taken 2982960 times.
✓ Branch 5 taken 2982815 times.
✗ Branch 6 not taken.
|
17500021 | switch (t) { |
| 18 | 2982589 | case 0: | |
| 19 |
8/10✓ Branch 1 taken 2982589 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2884058 times.
✓ Branch 5 taken 98531 times.
✓ Branch 7 taken 733553 times.
✓ Branch 8 taken 2150505 times.
✓ Branch 9 taken 832084 times.
✓ Branch 10 taken 2150505 times.
✓ Branch 12 taken 832084 times.
✗ Branch 13 not taken.
|
2982589 | if (lb == end(tr) || *lb != x) tr.insert(x); |
| 20 | 2982589 | break; | |
| 21 | 2587862 | case 1: | |
| 22 |
8/10✓ Branch 1 taken 2587862 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2397724 times.
✓ Branch 5 taken 190138 times.
✓ Branch 7 taken 737304 times.
✓ Branch 8 taken 1660420 times.
✓ Branch 9 taken 737304 times.
✓ Branch 10 taken 1850558 times.
✓ Branch 12 taken 737304 times.
✗ Branch 13 not taken.
|
2587862 | if (lb != end(tr) && *lb == x) tr.erase(lb); |
| 23 | 2587862 | break; | |
| 24 | 2981723 | case 2: | |
| 25 |
2/2✓ Branch 1 taken 154578 times.
✓ Branch 2 taken 2827145 times.
|
2981723 | if (tr.size() < x) fout << "-1\n"; |
| 26 |
1/2✓ Branch 1 taken 2827145 times.
✗ Branch 2 not taken.
|
2827145 | else fout << *tr.find_by_order(x - 1) << '\n'; |
| 27 | 2981723 | break; | |
| 28 |
4/6✓ Branch 1 taken 2982072 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2982072 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 2512626 times.
✓ Branch 8 taken 469446 times.
|
2982072 | case 3: fout << tr.order_of_key(x) + (lb != end(tr) ? *lb == x : false) << '\n'; break; |
| 29 | 2982960 | case 4: | |
| 30 |
4/6✓ Branch 1 taken 2982960 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 447636 times.
✓ Branch 5 taken 2535324 times.
✓ Branch 7 taken 447636 times.
✗ Branch 8 not taken.
|
2982960 | if (lb == end(tr)) lb = tr.rbegin(); |
| 31 |
3/4✓ Branch 1 taken 2982960 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 72592 times.
✓ Branch 5 taken 2910368 times.
|
2982960 | if (lb == end(tr)) fout << "-1\n"; |
| 32 |
2/2✓ Branch 1 taken 1232163 times.
✓ Branch 2 taken 1678205 times.
|
2910368 | else if (*lb <= x) fout << *lb << '\n'; |
| 33 |
3/4✓ Branch 1 taken 1678205 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 359667 times.
✓ Branch 5 taken 1318538 times.
|
1678205 | else if (lb == begin(tr)) fout << "-1\n"; |
| 34 | 1318538 | else fout << *std::prev(lb) << '\n'; | |
| 35 | 2982960 | break; | |
| 36 | 2982815 | case 5: | |
| 37 |
3/4✓ Branch 1 taken 2982815 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 498234 times.
✓ Branch 5 taken 2484581 times.
|
2982815 | if (lb == end(tr)) fout << "-1\n"; |
| 38 | 2484581 | else fout << *lb << '\n'; | |
| 39 | 2982815 | break; | |
| 40 | } | ||
| 41 | } | ||
| 42 | 37 | return 0; | |
| 43 | 37 | } | |
| 44 |