test/cpv_local/ds/segbeats_ca_ms.bzoj4695.cpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | // competitive-verifier: LOCALCASE test/cpv_local/_data/bzoj/4695 | ||
| 2 | |||
| 3 | #include "../../../src/ds/segtree/segbeats_ca_ms/lib.hpp" | ||
| 4 | |||
| 5 | using namespace tifa_libs; | ||
| 6 | using std::cin, std::cout; | ||
| 7 | 20 | int main() { | |
| 8 | u32 n; | ||
| 9 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | cin >> n; |
| 10 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | vecii a(n); |
| 11 |
3/4✓ Branch 4 taken 5926182 times.
✗ Branch 5 not taken.
✓ Branch 8 taken 5926182 times.
✓ Branch 9 taken 20 times.
|
5926202 | for (auto& i : a) cin >> i; |
| 12 | 20 | segbeats_ca_ms<i64> seg(a); | |
| 13 | u32 q; | ||
| 14 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | cin >> q; |
| 15 |
2/2✓ Branch 0 taken 5997401 times.
✓ Branch 1 taken 20 times.
|
5997421 | for (u32 i = 0, tp, l, r; i < q; ++i) { |
| 16 |
3/6✓ Branch 1 taken 5997401 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 5997401 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 5997401 times.
✗ Branch 8 not taken.
|
5997401 | cin >> tp >> l >> r; |
| 17 |
2/2✓ Branch 0 taken 3867160 times.
✓ Branch 1 taken 2130241 times.
|
5997401 | if (tp < 4) { |
| 18 | i64 x; | ||
| 19 |
1/2✓ Branch 1 taken 3867160 times.
✗ Branch 2 not taken.
|
3867160 | cin >> x; |
| 20 |
2/2✓ Branch 0 taken 2108498 times.
✓ Branch 1 taken 1758662 times.
|
3867160 | if (tp == 1) seg.add(l - 1, r, x); |
| 21 |
2/2✓ Branch 0 taken 878313 times.
✓ Branch 1 taken 880349 times.
|
1758662 | else if (tp == 2) seg.chmax(l - 1, r, x); |
| 22 |
1/2✓ Branch 0 taken 880349 times.
✗ Branch 1 not taken.
|
880349 | else if (tp == 3) seg.chmin(l - 1, r, x); |
| 23 | } else { | ||
| 24 | i64 got; | ||
| 25 |
2/2✓ Branch 0 taken 1067157 times.
✓ Branch 1 taken 1063084 times.
|
2130241 | if (tp == 4) got = seg.query_sum(l - 1, r); |
| 26 |
2/2✓ Branch 0 taken 530342 times.
✓ Branch 1 taken 532742 times.
|
1063084 | else if (tp == 5) got = seg.query_max(l - 1, r); |
| 27 | 532742 | else got = seg.query_min(l - 1, r); | |
| 28 |
2/4✓ Branch 1 taken 2130241 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2130241 times.
✗ Branch 5 not taken.
|
2130241 | cout << got << '\n'; |
| 29 | } | ||
| 30 | } | ||
| 31 | 20 | } | |
| 32 |