diff options
| author | mhsn <mail@mhsn.net> | 2026-03-18 21:48:13 +0000 |
|---|---|---|
| committer | mhsn <mail@mhsn.net> | 2026-03-18 21:48:13 +0000 |
| commit | 86bac31392a76da84817eec020d2b84d099b3cc1 (patch) | |
| tree | e2ee52db59b86b914d5b4bcceb19c9b5d899fff4 /2024/05/rust/src/main.rs | |
| parent | 62fe361fc42dea75deaf7ac31c0ba6ba80e26a9c (diff) | |
| download | puzzles-master.tar.gz puzzles-master.zip | |
Diffstat (limited to '2024/05/rust/src/main.rs')
| -rw-r--r-- | 2024/05/rust/src/main.rs | 42 |
1 files changed, 0 insertions, 42 deletions
diff --git a/2024/05/rust/src/main.rs b/2024/05/rust/src/main.rs deleted file mode 100644 index 0db788d..0000000 --- a/2024/05/rust/src/main.rs +++ /dev/null @@ -1,42 +0,0 @@ -#![feature(slice_split_once)] - -use std::cmp::Ordering::{Greater, Less}; -use std::collections::HashSet; -use std::io; - -fn main() -> io::Result<()> { - let mut lines = io::stdin().lines().flatten(); - let mut set = HashSet::<(u16, u16)>::new(); - - while let Some(s) = lines.next() { - if let Some((a, b)) = s.split_once('|') { - set.insert((a.parse().unwrap(), b.parse().unwrap())); - } else { - break; - } - } - - let mut silver: usize = 0; - let mut gold: usize = 0; - - for line in lines { - let mut nums: Vec<u16> = line.split(',').map(|n| n.parse().unwrap()).collect(); - let mid = nums.len() / 2; - - if nums.is_sorted_by(|&a, &b| set.contains(&(a, b))) { - silver += nums[mid] as usize; - } else { - gold += *nums - .select_nth_unstable_by(mid, |&a, &b| match set.contains(&(a, b)) { - true => Less, - false => Greater, - }) - .1 as usize; - } - } - - println!("silver: {silver}"); - println!("gold: {gold}"); - - return Ok(()); -} |
