結果
| 問題 |
No.938 賢人を探せ
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-01-18 00:48:47 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 53 ms / 2,000 ms |
| コード長 | 1,218 bytes |
| コンパイル時間 | 13,879 ms |
| コンパイル使用メモリ | 391,748 KB |
| 実行使用メモリ | 8,668 KB |
| 最終ジャッジ日時 | 2024-12-14 11:57:07 |
| 合計ジャッジ時間 | 15,156 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 21 |
ソースコード
use std::io::Read;
use std::collections::{HashSet, HashMap};
fn solve(ers: HashSet<String>, ees: HashSet<String>, ee_map: HashMap<String, usize>) {
let mut result: Vec<(String, usize)> = ees.difference(&ers)
.map(|name| (name.to_owned(), *(ee_map.get(name).unwrap())))
.collect();
result.sort_by_key(|r| r.1);
result.iter().for_each(|pair| {
println!("{}", pair.0);
});
}
fn main() {
let mut all_data = String::new();
std::io::stdin().read_to_string(&mut all_data).ok();
let all_data: Vec<&str> = all_data.trim().split('\n').map(|l| l.trim()).collect();
let n: usize = all_data.iter().next().unwrap().parse::<usize>().unwrap();
let mut ers: HashSet<String> = HashSet::new();
let mut ees: HashSet<String> = HashSet::new();
let mut ee_map: HashMap<String, usize> = HashMap::new();
all_data.iter().skip(1).take(n).enumerate().for_each(|pair| {
let er_ee: Vec<&str> = (pair.1).split_whitespace().collect();
ers.insert(er_ee[0].to_string());
ees.insert(er_ee[1].to_string());
if !ee_map.contains_key(er_ee[1]) {
ee_map.insert(er_ee[1].to_string(), pair.0);
}
});
solve(ers, ees, ee_map);
}