Advertisement
Guest User

Untitled

a guest
Dec 20th, 2016
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 0.85 KB | None | 0 0
  1. fn p1(v: &[(u64, u64)]) -> u64 {                                    
  2.     v.iter().fold(0, |h, &(low, high)| {
  3.         if low > h {
  4.             return h;
  5.         }
  6.         std::cmp::max(h, high + 1)
  7.     })
  8. }
  9.  
  10. fn p2(v: &[(u64, u64)]) -> u64 {
  11.     v.iter()
  12.         .chain(std::iter::once(&(1 << 32, 1 << 32)))
  13.         .fold((0, 0), |(h, c), &(low, high)| if low > h {
  14.             (high + 1, c + low - h)
  15.         } else {
  16.             (std::cmp::max(h, high + 1), c)
  17.         })
  18.         .1
  19. }
  20.  
  21. fn main() {
  22.     let mut pairs: Vec<_> = include_str!("../../20.input")
  23.         .lines()
  24.         .map(|line| {
  25.             let v: Vec<_> = line.split('-').map(|w| w.parse::<u64>().unwrap()).collect();
  26.             (v[0], v[1])
  27.         })
  28.         .collect();
  29.     pairs.sort();
  30.     println!("P1 = {}", p1(&pairs));
  31.     println!("P2 = {}", p2(&pairs));
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement