結果
問題 |
No.433 ICPC国内予選の選抜ルールがこんな感じだったらうれしい
|
ユーザー |
|
提出日時 | 2023-01-14 03:24:09 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 131 ms / 4,000 ms |
コード長 | 1,255 bytes |
コンパイル時間 | 13,625 ms |
コンパイル使用メモリ | 376,984 KB |
実行使用メモリ | 12,672 KB |
最終ジャッジ日時 | 2024-12-25 00:18:09 |
合計ジャッジ時間 | 20,790 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 48 |
ソースコード
use std::{cmp::Reverse, collections::BinaryHeap}; const LIMIT: usize = 1e5 as usize; fn main() { let mut nk = String::new(); std::io::stdin().read_line(&mut nk).ok(); let nk: Vec<usize> = nk.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let n = nk[0]; let k = nk[1]; let teams = (0..n).map(|_| { let mut temp = String::new(); std::io::stdin().read_line(&mut temp).ok(); let temp: Vec<usize> = temp.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); (temp[0], temp[1], temp[2]-1) }) .collect::<Vec<_>>(); let mut orders = vec![vec![]; LIMIT]; for i in 0..n { let (_, _, u) = teams[i]; orders[u].push(i); } for i in 0..LIMIT { orders[i].sort_by_key(|&j| (Reverse(teams[j].0), teams[j].1)); } let mut pque = BinaryHeap::new(); for v in orders.iter() { let limit = v.len(); for i in 0..limit { let team_idx = v[i]; let (s, p, _) = teams[team_idx]; pque.push((s, Reverse(i), Reverse(p), team_idx)); } } for _ in 0..k { let (_, _, _, team_idx) = pque.pop().unwrap(); println!("{}", team_idx); } }