Skip to content

Commit 813033a

Browse files
committed
Revert "Update wavelet_matrix.hpp"
This reverts commit cd5257c.
1 parent 6f3a198 commit 813033a

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

library/data_structures_[l,r)/seg_tree_uncommon/wavelet_count_less.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//! count of i in [l..r) such that a[i] < ub
33
//! @time O(log(max_val))
44
//! @space O(1)
5-
int count(int l, int r, ull ub) {
5+
int count(int l, int r, ll ub) {
66
int res = 0;
77
for (int h = sz(bv); h--;) {
88
int l0 = bv[h].cnt(l), r0 = bv[h].cnt(r);

library/data_structures_[l,r)/seg_tree_uncommon/wavelet_matrix.hpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
#pragma once
22
#include "wavelet_bit_vec.hpp"
33
//! @code
4-
//! vector<ull> a(n);
5-
//! wavelet_matrix wm(a, 1e9); // requires a[i] <= 1e9
4+
//! vector<ll> a(n);
5+
//! wavelet_matrix wm(a, 30); // 0 <= a[i] < (1<<30)
66
//! wm.kth(l, r, k); //(k+1)th smallest number in [l,r)
77
//! wm.kth(l, r, 0); //min in [l,r)
88
//! @endcode
9-
//! @time O(n * log(max_val) + q * log(max_val))
10-
//! @space O(n * log(max_val) / 64)
9+
//! @time O(n * lg + q * lg)
10+
//! @space O(n * lg / 64)
1111
struct wavelet_matrix {
1212
int n;
1313
vector<bit_vec> bv;
14-
wavelet_matrix(vector<ull> a, ull max_val):
15-
n(sz(a)), bv(bit_width(max_val), {{}}) {
14+
wavelet_matrix(vector<ll> a, int lg):
15+
n(sz(a)), bv(lg, {{}}) {
1616
for (int h = sz(bv); h--;) {
17-
int i = 0;
1817
vector<bool> b(n);
19-
ranges::stable_partition(a,
20-
[&](ull x) { return b[i++] = (~x >> h) & 1; });
18+
rep(i, 0, n) b[i] = (~a[i] >> h) & 1;
2119
bv[h] = b;
20+
ranges::stable_partition(a,
21+
[&](ll x) { return (~x >> h) & 1; });
2222
}
2323
}
24-
ull kth(int l, int r, int k) {
24+
ll kth(int l, int r, int k) {
2525
ll res = 0;
2626
for (int h = sz(bv); h--;) {
2727
int l0 = bv[h].cnt(l), r0 = bv[h].cnt(r);

0 commit comments

Comments
 (0)