Skip to content

Commit 831c35a

Browse files
Fixed mistakes
1 parent c35995e commit 831c35a

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/segtree.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ impl<M: Monoid> From<Vec<M::S>> for Segtree<M> {
1616
let n = v.len();
1717
let log = ceil_pow2(n as u32) as usize;
1818
let size = 1 << log;
19-
let mut d = vec![M::IDENTITY; n];
20-
d[size..(n + size)].clone_from_slice(&v[..n]);
19+
let mut d = vec![M::IDENTITY; 2 * size];
20+
d[size..(size + n)].clone_from_slice(&v);
2121
let mut ret = Segtree { n, size, log, d };
2222
for i in (1..n).rev() {
2323
ret.update(i);
@@ -27,7 +27,7 @@ impl<M: Monoid> From<Vec<M::S>> for Segtree<M> {
2727
}
2828
impl<M: Monoid> Segtree<M> {
2929
pub fn set(&mut self, mut p: usize, x: M::S) {
30-
assert!(p <= self.n);
30+
assert!(p < self.n);
3131
p += self.size;
3232
self.d[p] = x;
3333
for i in 1..=self.log {
@@ -36,7 +36,7 @@ impl<M: Monoid> Segtree<M> {
3636
}
3737

3838
pub fn get(&self, p: usize) -> M::S {
39-
assert!(p <= self.n);
39+
assert!(p < self.n);
4040
self.d[p + self.size]
4141
}
4242

0 commit comments

Comments
 (0)