Skip to content

Commit 4d0dc0b

Browse files
committed
segtree: get_slice
1 parent 764c814 commit 4d0dc0b

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

src/segtree.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ impl<M: Monoid> From<Vec<M::S>> for Segtree<M> {
127127
let log = ceil_pow2(n as u32) as usize;
128128
let size = 1 << log;
129129
let mut d = vec![M::identity(); 2 * size];
130-
d[size..(size + n)].clone_from_slice(&v);
130+
d[size..][..n].clone_from_slice(&v);
131131
let mut ret = Segtree { n, size, log, d };
132132
for i in (1..size).rev() {
133133
ret.update(i);
@@ -170,6 +170,10 @@ impl<M: Monoid> Segtree<M> {
170170
self.d[p + self.size].clone()
171171
}
172172

173+
pub fn get_slice(&self) -> &[M::S] {
174+
&self.d[self.size..][..self.n]
175+
}
176+
173177
pub fn prod<R>(&self, range: R) -> M::S
174178
where
175179
R: RangeBounds<usize>,

0 commit comments

Comments
 (0)