fork download
  1. fn main() {
  2. let x = vec![1, 1, 2, 3, 5, 5, 8, 13];
  3. fn bis<P>(ok: i64, ng: i64, p: P) -> i64
  4. where P: Fn(i64) -> bool {
  5. let mid = (ok + ng) / 2;
  6. if (ok - ng).abs() == 1 {
  7. ok
  8. } else if p(mid) {
  9. bis(mid, ng, p)
  10. } else {
  11. bis(ok, mid, p)
  12. }
  13. }
  14. let i = bis(x.len() as i64, -1, |i| x[i as usize] >= 5);
  15. println!("i = {}", i);
  16. let j = bis(x.len() as i64, -1, |i| x[i as usize] > 5);
  17. println!("j = {}", j);
  18. }
Success #stdin #stdout 0s 4304KB
stdin
Standard input is empty
stdout
i = 4
j = 6