Submission #1692464
Source Code Expand
#[allow(unused_imports)]
use std::cmp::{max, min, Ordering};
#[allow(unused_imports)]
use std::collections::{HashMap, HashSet};
mod util {
use std::io::stdin;
use std::str::FromStr;
use std::fmt::Debug;
#[allow(dead_code)]
pub fn line() -> String {
let mut line: String = String::new();
stdin().read_line(&mut line).unwrap();
line.trim().to_string()
}
#[allow(dead_code)]
pub fn get<T: FromStr>() -> T
where
<T as FromStr>::Err: Debug,
{
let mut line: String = String::new();
stdin().read_line(&mut line).unwrap();
line.trim().parse().unwrap()
}
#[allow(dead_code)]
pub fn gets<T: FromStr>() -> Vec<T>
where
<T as FromStr>::Err: Debug,
{
let mut line: String = String::new();
stdin().read_line(&mut line).unwrap();
line.split_whitespace()
.map(|t| t.parse().unwrap())
.collect()
}
#[allow(dead_code)]
pub fn get2<T: FromStr, U: FromStr>() -> (T, U)
where
<T as FromStr>::Err: Debug,
<U as FromStr>::Err: Debug,
{
let mut line: String = String::new();
stdin().read_line(&mut line).unwrap();
let mut iter = line.split_whitespace();
(
iter.next().unwrap().parse().unwrap(),
iter.next().unwrap().parse().unwrap(),
)
}
#[allow(dead_code)]
pub fn get3<S: FromStr, T: FromStr, U: FromStr>() -> (S, T, U)
where
<S as FromStr>::Err: Debug,
<T as FromStr>::Err: Debug,
<U as FromStr>::Err: Debug,
{
let mut line: String = String::new();
stdin().read_line(&mut line).unwrap();
let mut iter = line.split_whitespace();
(
iter.next().unwrap().parse().unwrap(),
iter.next().unwrap().parse().unwrap(),
iter.next().unwrap().parse().unwrap(),
)
}
}
// std::cmp::Reverse doesn't have Clone.
#[derive(Eq, PartialEq, Clone)]
struct Rev<T>(pub T);
impl<T: PartialOrd> PartialOrd for Rev<T> {
fn partial_cmp(&self, other: &Rev<T>) -> Option<Ordering> {
other.0.partial_cmp(&self.0)
}
}
impl<T: Ord> Ord for Rev<T> {
fn cmp(&self, other: &Rev<T>) -> Ordering {
other.0.cmp(&self.0)
}
}
#[allow(unused_macros)]
macro_rules! debug {
($x: expr) => {
println!("{}: {:?}", stringify!($x), $x)
}
}
fn main() {
let _n: usize = util::get();
let a: Vec<usize> = util::gets();
let mut map = HashMap::new();
for &x in &a {
*map.entry(x).or_insert(0) += 1;
}
let m = map.values().filter(|&v| v % 2 == 0).count();
let ans = if m % 2 == 0 {
map.keys().count()
} else {
map.keys().count() - 1
};
println!("{}", ans);
}
Submission Info
Submission Time |
|
Task |
D - Card Eater |
User |
hatoo |
Language |
Rust (1.15.1) |
Score |
400 |
Code Size |
2919 Byte |
Status |
AC |
Exec Time |
18 ms |
Memory |
12540 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
400 / 400 |
Status |
|
|
Set Name |
Test Cases |
Sample |
00_example_01.txt, 00_example_02.txt |
All |
00_example_01.txt, 00_example_02.txt, 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt |
Case Name |
Status |
Exec Time |
Memory |
00_example_01.txt |
AC |
2 ms |
4352 KB |
00_example_02.txt |
AC |
2 ms |
4352 KB |
01.txt |
AC |
2 ms |
4352 KB |
02.txt |
AC |
2 ms |
4352 KB |
03.txt |
AC |
2 ms |
4352 KB |
04.txt |
AC |
2 ms |
4352 KB |
05.txt |
AC |
2 ms |
4352 KB |
06.txt |
AC |
10 ms |
6396 KB |
07.txt |
AC |
10 ms |
6396 KB |
08.txt |
AC |
11 ms |
6396 KB |
09.txt |
AC |
10 ms |
6396 KB |
10.txt |
AC |
10 ms |
6396 KB |
11.txt |
AC |
11 ms |
6396 KB |
12.txt |
AC |
10 ms |
6396 KB |
13.txt |
AC |
10 ms |
6396 KB |
14.txt |
AC |
18 ms |
12540 KB |
15.txt |
AC |
9 ms |
6396 KB |