File tree Expand file tree Collapse file tree 1 file changed +4
-4
lines changed Expand file tree Collapse file tree 1 file changed +4
-4
lines changed Original file line number Diff line number Diff 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}
2828impl < 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
You can’t perform that action at this time.
0 commit comments