From ffc4d858227e02ebcdb85f77ab7ca121b1166324 Mon Sep 17 00:00:00 2001 From: yenru0 Date: Sat, 17 Jan 2026 00:17:04 -0800 Subject: [PATCH] complete 13334.rs 20207.rs --- storage/zeta/rs/completed/13334.rs | 69 ++++++++++++++++++++++++++++++ storage/zeta/rs/completed/20207.rs | 46 ++++++++++++++++++++ 2 files changed, 115 insertions(+) create mode 100644 storage/zeta/rs/completed/13334.rs create mode 100644 storage/zeta/rs/completed/20207.rs diff --git a/storage/zeta/rs/completed/13334.rs b/storage/zeta/rs/completed/13334.rs new file mode 100644 index 0000000..e71b6b6 --- /dev/null +++ b/storage/zeta/rs/completed/13334.rs @@ -0,0 +1,69 @@ +use std::{ + cmp::{max, Reverse}, + collections::BinaryHeap, + i32, + io::{stdin, Read}, +}; + +fn main() { + let mut buffer = Vec::new(); + + stdin().read_to_end(&mut buffer).unwrap(); + let mut tokens = buffer.split(|&b| b <= b' '); + let mut next_i32 = || { + tokens.find(|s| !s.is_empty()).map(|s| { + let mut res = 0i32; + let mut neg = false; + let mut start = 0; + if s[0] == b'-' { + neg = true; + start = 1; + } + for i in start..s.len() { + res = res * 10 + (s[i] - b'0') as i32; + } + if neg { + -res + } else { + res + } + }) + }; + + let n = next_i32().unwrap(); + + let mut commute_infos = (0..n) + .map(|_| { + let (a, b) = (next_i32().unwrap(), next_i32().unwrap()); + if b > a { + (a, b) + } else { + (b, a) + } + }) + .collect::>(); + + let d = next_i32().unwrap(); + commute_infos.sort_unstable_by_key(|&(_, b)| b); + let mut max_benefit = 0; + let mut deq: BinaryHeap> = BinaryHeap::new(); + + for &(h, o) in commute_infos.iter() { + if o - h > d { + continue; + } + deq.push(Reverse(h)); + + while let Some(ch) = deq.peek() { + if ch.0 < o - d { + deq.pop(); + } else { + break; + } + } + + max_benefit = max(max_benefit, deq.len()); + } + + println!("{}", max_benefit); +} diff --git a/storage/zeta/rs/completed/20207.rs b/storage/zeta/rs/completed/20207.rs new file mode 100644 index 0000000..4df09bc --- /dev/null +++ b/storage/zeta/rs/completed/20207.rs @@ -0,0 +1,46 @@ +use std::cmp::max; +use std::io::{read_to_string, stdin}; + +fn main() { + let temp = read_to_string(stdin()).unwrap(); + let mut iter = temp + .split_ascii_whitespace() + .map(|x| x.parse::().unwrap()); + + let n = iter.next().unwrap(); + + let mut schedules = (0..n) + .map(|_| (iter.next().unwrap(), iter.next().unwrap())) + .collect::>(); + + schedules.sort_by_key(|x| x.0); + + let mut calendar = vec![0usize; 366]; + for &(s, e) in schedules.iter() { + for i in s..=e { + calendar[i] += 1; + } + } + + let mut local_max_height = 0; + let mut starting = 0; + let mut sheet_area = 0; + for (i, &c) in calendar.iter().enumerate() { + if c == 0 { + sheet_area += (i - starting) * local_max_height; + local_max_height = 0; + } else { + if local_max_height == 0 { + starting = i; + } + + local_max_height = max(c, local_max_height); + } + } + + if local_max_height > 0 { + sheet_area += (366 - starting) * local_max_height; + } + + println!("{}", sheet_area); +}