Varified
monoid_def!(Mm, std::i32::MAX, |x, y| { min(x, y) });
monoid_def!(Max, std::usize::MIN, |x, y| { max(x, y) });
#test
fn debug() {
let mut s =
SegmentTree::::new(&[1usize, 2, 3, 2, 1, 3, 1]);
dbg!(&s);
s.update(7, 100);
dbg!(&s);
}
#test
fn get() {
let s = SegmentTree::::new(&[1usize, 2, 3, 2, 1, 3, 1]);
dbg!(&s);
assert_eq!(s.range(0, 2).0, 2);
assert_eq!(s.range(3, 6).0, 3);
assert_eq!(s.range(0, 8).0, 3);
}