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(&[Max(1usize), Max(2), Max(3), Max(2), Max(1), Max(3), Max(1)]);
dbg!(&s);
s.update(7, Max(100));
dbg!(&s);
}
#[test]
fn get() {
let s = SegmentTree::::new(&[Max(1usize), Max(2), Max(3), Max(2), Max(1), Max(3), Max(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);
}