Struct librualg::segment_tree::Rsq [−][src]
Range Sum Query
Implementations
impl<T> Rsq<T> where
T: Default + Clone + Copy + Add<Output = T>,
[src]
impl<T> Rsq<T> where
T: Default + Clone + Copy + Add<Output = T>,
[src]pub fn new(src: &[T]) -> Self
[src]
pub fn new(src: &[T]) -> Self
[src]Build Segment Tree (RSQ) from slice.
use librualg::segment_tree::Rsq; let arr = [1, 2, 3, 4, 5]; let tree = Rsq::new(&arr);
pub fn query(&self, l: usize, r: usize) -> Option<T>
[src]
pub fn query(&self, l: usize, r: usize) -> Option<T>
[src]Returns the sum on the interval l to r
use librualg::segment_tree::Rsq; let arr = [1, 2, 3, 4, 5]; let tree = Rsq::new(&arr); assert_eq!(tree.query(0, 4).unwrap(), 15); assert_eq!(tree.query(1, 4).unwrap(), 14); assert_eq!(tree.query(4, 1).unwrap(), 14); assert_eq!(tree.query(3, 1).unwrap(), 9); assert_eq!(tree.query(3, 11), None);
Auto Trait Implementations
impl<T> RefUnwindSafe for Rsq<T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<T> Send for Rsq<T> where
T: Send,
T: Send,
impl<T> Sync for Rsq<T> where
T: Sync,
T: Sync,
impl<T> Unpin for Rsq<T> where
T: Unpin,
T: Unpin,
impl<T> UnwindSafe for Rsq<T> where
T: UnwindSafe,
T: UnwindSafe,