47 lines
1.2 KiB
Rust
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");},
|
|
}
|
|
}
|
|
}
|