GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 34 / 0 / 34
Functions: 100.0% 1 / 0 / 1
Branches: 76.1% 51 / 0 / 67

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