pub fn extremum_slice<T: Ord>(buf: &[T], f: impl FnMut(&T) -> T) -> (usize, T)
Expand description

三分探索で極値を探す。

Notes

extremum を参照されたい。

Examples

use nekolib::algo::extremum_slice;

let buf = [1, 3, 4, 6, 5, 2, 0, 1, 3];
//         <------ f ------>
//                  <------ g ------>

let f = |&x: &i32| x * x;
assert_eq!(extremum_slice(&buf[..6], f), (3_usize, 36));
let g = |&x: &i32| -x;
assert_eq!(extremum_slice(&buf[3..], g), (3_usize, 0));