Files
CodeTest/baekjoon/숫자_카드_2/solution_20190119.rs
2024-08-29 16:22:11 +09:00

47 lines
1.2 KiB
Rust

use std::io::{self, Write, BufWriter};
use std::collections::BTreeMap;
macro_rules! parse_line {
($($t: ty),+) => ({
let mut line = String::new();
std::io::stdin().read_line(&mut line).unwrap();
let mut iter = line.split_whitespace();
($(iter.next().unwrap().parse::<$t>().unwrap()),+)
})
}
macro_rules! parse_list {
($t: ty) => ({
let mut line = String::new();
std::io::stdin().read_line(&mut line).unwrap();
let list: Vec<$t> = line.split_whitespace()
.map(|w| w.parse::<$t>().unwrap()).collect();
list
})
}
fn main(){
let _n : usize = parse_line!(usize);
let cards : Vec<i32> = parse_list!(i32);
let mut tree : BTreeMap<i32, usize> = BTreeMap::new();
for &x in cards.iter(){
*tree.entry(x).or_insert(0) += 1;
}
let _m : usize = parse_line!(usize);
let finds : Vec<i32> = parse_list!(i32);
let stdout = io::stdout();
let lock = stdout.lock();
let mut buff = BufWriter::new(lock);
for &x in finds.iter(){
match tree.get(&x){
Some(n) => {buff.write_fmt(format_args!("{} ", n)).expect("Failed to write");},
None => {buff.write(b"0 ").expect("Failed to write");},
}
}
}