ex_dynamic/
ex_dynamic.rs

1use seg_lib::{DynamicSegmentTree, ops::LCM};
2
3/// Demonstrates how to use a [`DynamicSegmentTree`] for:
4/// - range LCM queries
5/// - point updates (direct or functional)
6fn main() {
7    // Initialize a dynamic segment tree over -1000..5000
8    let range = -1_000..5_000;
9    let mut seg = DynamicSegmentTree::<LCM<i32>>::new(range.clone()).unwrap();
10    assert_eq!(seg.len(), range.len());
11    assert_eq!(seg.range_query(..), 1);
12
13    // Update single elements
14    seg.point_update(0, 2 * 3 * 7);
15    seg.point_update(1_000, 3 * 7);
16    seg.point_update(2_000, 2 * 5);
17
18    // Query elements and ranges
19    assert_eq!(seg.point_query(0), 2 * 3 * 7);
20    assert_eq!(seg.range_query(..), 2 * 3 * 5 * 7);
21    assert_eq!(seg.range_query(..1_000), 2 * 3 * 7);
22}