40 lines
979 B
Rust
40 lines
979 B
Rust
|
|
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
|
|
})
|
|
}
|
|
|
|
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()),+)
|
|
})
|
|
}
|
|
|
|
fn main(){
|
|
let length = parse_line!(usize);
|
|
let mut numbers = parse_list!(usize);
|
|
|
|
// find medain
|
|
numbers.sort_unstable();
|
|
let median = numbers[(length - 1) / 2];
|
|
|
|
// find average
|
|
let mut sum : usize = 0;
|
|
for x in numbers.iter(){
|
|
sum += x;
|
|
}
|
|
let n : usize = sum / length;
|
|
let delta : usize = sum - n * length;
|
|
let mean : usize = if delta * 2 <= length{ n } else { n + 1 };
|
|
|
|
println!("{} {}", median, mean);
|
|
}
|