結果
問題 | No.649 ここでちょっとQK! |
ユーザー |
|
提出日時 | 2022-08-11 20:31:58 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 257 ms / 3,000 ms |
コード長 | 2,159 bytes |
コンパイル時間 | 12,669 ms |
コンパイル使用メモリ | 405,860 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-22 04:17:24 |
合計ジャッジ時間 | 17,141 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 32 |
ソースコード
use std::{cmp::Reverse, collections::BinaryHeap};macro_rules! read_line {($($xs: tt)*) => {let mut buf = String::new();std::io::stdin().read_line(&mut buf).unwrap();let mut iter = buf.split_whitespace();expand!(iter, $($xs)*);};}macro_rules! expand {($iter: expr,) => {};($iter: expr, mut $var: ident : $type: tt, $($xs: tt)*) => {let mut $var = value!($iter, $type);expand!($iter, $($xs)*);};($iter: expr, $var: ident : $type: tt, $($xs: tt)*) => {let $var = value!($iter, $type);expand!($iter, $($xs)*);};}macro_rules! value {($iter:expr, ($($type: tt),*)) => {($(value!($iter, $type)),*);};($iter: expr, [$type: tt; $len: expr]) => {(0..$len).map(|_| value!($iter, $type)).collect::<Vec<_>>()};($iter: expr, Chars) => {value!($iter, String).chars().collect::<Vec<_>>()};($iter: expr, $type: ty) => {if let Some(v) = $iter.next() {Some(v.parse::<$type>().unwrap())} else {None}};}fn main() {read_line! {q: usize, k: usize,}let (q, k) = (q.unwrap(), k.unwrap());let mut pql = BinaryHeap::new();let mut pqr = BinaryHeap::new();let v = vec![1, 2, 3];v.into_iter().next();for _ in 0..q {read_line! {t: usize, v: usize,}let t = t.unwrap();if t == 1 {let v = v.unwrap();if pql.len() < k {pql.push(v);} else {if *pql.peek().unwrap() <= v {pqr.push(Reverse(v));} else {let u = pql.pop().unwrap();pql.push(v);pqr.push(Reverse(u));}}} else {if pql.len() < k {println!("-1");} else {println!("{}", pql.pop().unwrap());if let Some(Reverse(u)) = pqr.pop() {pql.push(u);}}}}}