We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent f808141 commit 4c88f61Copy full SHA for 4c88f61
library/data_structures_[l,r]/seg_tree_uncommon/walk.hpp
@@ -1,10 +1,22 @@
1
+int go(int l, int r) {
2
+//return __lg(min(l & -l, r - l + 1));
3
+//return __lg(min((l + n) & -(l + n), r - l + 1));
4
+ return min(__builtin_ctz(l + n), __lg(r - l + 1));
5
+}
6
int walk(int l, int r, const auto& f) {
7
+ /*
8
for (l += n, r += n; l <= r;)
9
if (int u = nxt(l, r); f(s[u])) {
10
while (u < n)
11
if (f(s[2 * u])) u *= 2;
12
else (u *= 2)++;
13
return u - n;
14
}
15
+ */
16
+ while (l <= r) {
17
+ int u = l + n, x = __lg(min(u & -u, r - l + 1));
18
+ if (f(s[u >> x])) r = l + (1 << x) - 1;
19
+ else l += 1 << x;
20
+ }
21
return -1;
22
0 commit comments