File tree Expand file tree Collapse file tree 1 file changed +8
-7
lines changed
library/data_structures/seg_tree_uncommon Expand file tree Collapse file tree 1 file changed +8
-7
lines changed Original file line number Diff line number Diff line change 11#pragma once
2+ // ! @code
3+ // ! vector<ull> a(n);
4+ // ! wavelet_matrix wm(a, 1e9 /*a[i] <= 1e9*/);
5+ // ! wm.kth(l, r, k); //(k+1)th smallest number in [l,r)
6+ // ! wm.kth(l, r, 0); //min in [l,r)
7+ // ! @endcode
8+ // ! @time O(n * log(max_val) + q * log(max_val))
9+ // ! @space O(n * log(max_val) / 64)
210#include " wavelet_bit_vec.hpp"
311struct wavelet_matrix {
412 int n;
513 vector<bit_vec> bv;
6- // ! Requires a[i] <= max_val
7- // ! @time O(n * log(max_val))
8- // ! @space O(n * log(max_val) / 64)
914 wavelet_matrix (vector<ull> a, ull max_val):
1015 n (sz(a)), bv(bit_width(max_val), {{}}) {
1116 for (int h = sz (bv); h--;) {
@@ -16,10 +21,6 @@ struct wavelet_matrix {
1621 bv[h] = b;
1722 }
1823 }
19- // ! (k+1)th smallest number in [l,r)
20- // ! kth(l,r,0) returns the min
21- // ! @time O(log(max_val))
22- // ! @space O(1)
2324 ull kth (int l, int r, int k) {
2425 ll res = 0 ;
2526 for (int h = sz (bv); h--;) {
You can’t perform that action at this time.
0 commit comments