blob: e0f972557054eac473e0bfcf30bd2327c4af86f7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
use std::io::{BufRead};
fn insert_and_shift<T: Copy + PartialOrd, const N: usize>(x: &mut [T; N], y: T) {
let idx = x.partition_point(|&z| y <= z);
if idx >= N { return; }
for i in (idx..N-1).rev() {
x[i+1] = x[i];
}
x[idx] = y;
}
fn main() {
let stdin = std::io::stdin();
let handle = stdin.lock();
let mut top: [usize; 3] = [0, 0, 0];
let mut sum: usize = 0;
for l in handle.lines() {
let line = l.unwrap();
match line.parse::<usize>() {
Ok(n) => {
sum += n;
}
Err(_) => {
insert_and_shift(&mut top, sum);
sum = 0;
}
}
}
insert_and_shift(&mut top, sum);
sum = 0;
println!("{}", top.into_iter().sum::<usize>());
}
|