Advertisement
Guest User

Untitled

a guest
Dec 9th, 2024
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.07 KB | None | 0 0
  1. fn main() {
  2.     let input = include_str!("../input.txt").trim();
  3.    
  4.     let time = std::time::Instant::now();
  5.  
  6.     let mut memory = input.chars().enumerate()
  7.         .map(|(i, c)| {
  8.             if i % 2 == 0 {
  9.                 vec![Some(i as i32 / 2); c.to_string().parse::<usize>().unwrap()]
  10.             } else {
  11.                 vec![None; c.to_string().parse::<usize>().unwrap()]
  12.             }
  13.         })
  14.         .into_iter()
  15.         .flatten()
  16.         .collect::<Vec<Option<i32>>>();
  17.  
  18.     let mut j = memory.len() - 1;
  19.     for i in 0..memory.len() {
  20.         if j <= i {
  21.             break;
  22.         }
  23.         if memory[i].is_some() {
  24.             continue;
  25.         }
  26.  
  27.         while memory[j].is_none() {
  28.             j -= 1;
  29.         }
  30.         memory.swap(i, j);
  31.         j -= 1;
  32.     }
  33.  
  34.     let sum: i64 = memory.iter().enumerate().map(|(i, m)| {
  35.         if let Some(s) = m {
  36.             *s as i64 * i as i64
  37.         } else {
  38.             0_i64
  39.         }
  40.     }).sum();
  41.  
  42.     println!("Time elapsed: {:?}", time.elapsed());
  43.     println!("Sum: {}", sum);
  44. }
  45.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement