結果
問題 | No.2804 Fixer And Ratism |
ユーザー |
![]() |
提出日時 | 2024-07-13 11:59:13 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 56 ms / 2,000 ms |
コード長 | 1,902 bytes |
コンパイル時間 | 14,189 ms |
コンパイル使用メモリ | 402,332 KB |
実行使用メモリ | 8,848 KB |
最終ジャッジ日時 | 2024-07-13 11:59:33 |
合計ジャッジ時間 | 17,145 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 31 |
ソースコード
#![allow(non_snake_case)]#[allow(unused_imports)]use proconio::{fastout, input, marker::*};#[fastout]fn main() {input! {mut N: usize, Q: usize,}let mut s1 = vec![];let mut s2 = vec![];for _ in 0..Q {input! {t: u8,}if t == 1 {input! {s: String,r: u32,}s2.push((s, r));} else if t == 2 {input! {x: usize,}N -= x;} else {input! {s: String,x: usize,}N += x;for i in 0..s2.len() {if s2[i].0 == s {let r = s2[i].1;s1.push((s, r));s2.remove(i);break;}}}s1.sort_by_key(|(_, r)| *r);s2.sort_by_key(|(_, r)| *r);s1.reverse();s2.reverse();if s1.len() + s2.len() > N {let mut removed_names = vec![];let d = s1.len() + s2.len() - N;for _ in 0..d {if s2.len() > 0 {let (name, r) = s2.pop().unwrap();removed_names.push((name, r));} else {let (name, r) = s1.pop().unwrap();removed_names.push((name, r));}}removed_names.sort_by_key(|(_, r)| *r);println!("{}",removed_names.iter().map(|(name, _)| name).collect::<Vec<_>>().iter().map(|x| x.to_string()).collect::<Vec<_>>().join("\n"));}}}