Skip to content

Commit a73392b

Browse files
author
Cameron Custer
committed
use <bit> instead of __lg in seg_tree_midpoint test
1 parent c83c69e commit a73392b

1 file changed

Lines changed: 13 additions & 12 deletions

File tree

tests/library_checker_aizu_tests/handmade_tests/seg_tree_midpoint.test.cpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@
22
"https://onlinejudge.u-aizu.ac.jp/problems/ITP1_1_A"
33
#include "../template.hpp"
44
#include "../../../library/data_structures_[l,r)/seg_tree_midpoint.hpp"
5+
int lg(int x) { return bit_width(x + 0u) - 1; }
56
int main() {
67
cin.tie(0)->sync_with_stdio(0);
78
rep(n, 1, 5000) {
89
auto dfs = [&](auto&& self, int tl, int tr,
910
int v) -> void {
1011
assert((v >= n) == ((tr - tl) == 1));
1112
if (v >= n) { // leaf node
12-
const int depth_leaf = __lg(v),
13-
max_depth = __lg(2 * n - 1);
13+
const int depth_leaf = lg(v),
14+
max_depth = lg(2 * n - 1);
1415
if (tl == 0) { // left-most leaf
1516
assert(v == (1 << max_depth));
1617
assert(depth_leaf == max_depth);
@@ -25,30 +26,30 @@ int main() {
2526
if (((tr - tl) & (tr - tl - 1)) == 0)
2627
assert(split(tl, tr) == (tl + tr) / 2);
2728
{
28-
int pow_2 = 1 << __lg(tr - tl);
29+
int pow_2 = bit_floor(tr - tl + 0u);
2930
if (tl + pow_2 < tr - pow_2 / 2) {
3031
assert(pow_2 != tr - tl);
3132
assert(pow_2 / 2 < tr - tl - pow_2 &&
3233
tr - tl - pow_2 < pow_2);
3334
assert(
3435
pow_2 <= 2 * (tr - tl - pow_2) - 1 &&
3536
2 * (tr - tl - pow_2) - 1 < 2 * pow_2 - 1);
36-
assert(__lg(pow_2) ==
37-
__lg(2 * ((tr - tl) - pow_2) - 1) &&
38-
__lg(pow_2) == __lg(2 * pow_2 - 1));
37+
assert(lg(pow_2) ==
38+
lg(2 * ((tr - tl) - pow_2) - 1) &&
39+
lg(pow_2) == lg(2 * pow_2 - 1));
3940
} else if (pow_2 < tr - tl) {
4041
assert(pow_2 / 2 < tr - tl - pow_2 / 2 &&
4142
tr - tl - pow_2 / 2 <= pow_2);
4243
assert(
4344
pow_2 <= 2 * ((tr - tl) - pow_2 / 2) - 1 &&
4445
2 * ((tr - tl) - pow_2 / 2) - 1 <=
4546
2 * pow_2 - 1);
46-
assert(__lg(2 * (tr - tl - pow_2 / 2) - 1) ==
47-
__lg(2 * pow_2 - 1));
48-
assert(__lg(2 * ((tr - tl) - pow_2 / 2) - 1) ==
49-
__lg(pow_2));
50-
assert(__lg(pow_2) ==
51-
1 + __lg(2 * (pow_2 / 2) - 1));
47+
assert(lg(2 * (tr - tl - pow_2 / 2) - 1) ==
48+
lg(2 * pow_2 - 1));
49+
assert(lg(2 * ((tr - tl) - pow_2 / 2) - 1) ==
50+
lg(pow_2));
51+
assert(
52+
lg(pow_2) == 1 + lg(2 * (pow_2 / 2) - 1));
5253
}
5354
}
5455
int tm = split(tl, tr);

0 commit comments

Comments
 (0)