Skip to main content

binary_search

Function binary_search 

Source
pub fn binary_search<T, F>(f: F, ok: T, err: T) -> T
where T: Bisect, F: FnMut(&T) -> bool,
Expand description

binary search for monotone segment

if ok < err then search [ok, err) where t(ok), t, t, …. t, t(ret), f, … f, f, f, err

if err < ok then search (err, ok] where err, f, f, f, … f, t(ret), … t, t, t(ok)

Examples found in repository?
crates/competitive/src/algorithm/binary_search.rs (line 101)
100    fn position_bisect(&self, mut f: impl FnMut(&T) -> bool) -> usize {
101        binary_search(|i| f(&self[*i as usize]), self.len() as i64, -1) as usize
102    }
103    fn rposition_bisect(&self, mut f: impl FnMut(&T) -> bool) -> usize {
104        binary_search(|i| f(&self[i - 1]), 0, self.len() + 1)
105    }