Submission #3367037
Source Code Expand
/// Thank you tanakh!!!
/// https://qiita.com/tanakh/items/0ba42c7ca36cd29d0ac8
macro_rules! input {
(source = $s:expr, $($r:tt)*) => {
let mut iter = $s.split_whitespace();
input_inner!{iter, $($r)*}
};
($($r:tt)*) => {
let mut s = {
use std::io::Read;
let mut s = String::new();
std::io::stdin().read_to_string(&mut s).unwrap();
s
};
let mut iter = s.split_whitespace();
input_inner!{iter, $($r)*}
};
}
macro_rules! input_inner {
($iter:expr) => {};
($iter:expr, ) => {};
($iter:expr, $var:ident : $t:tt $($r:tt)*) => {
let $var = read_value!($iter, $t);
input_inner!{$iter $($r)*}
};
}
macro_rules! read_value {
($iter:expr, ( $($t:tt),* )) => {
( $(read_value!($iter, $t)),* )
};
($iter:expr, [ $t:tt ; $len:expr ]) => {
(0..$len).map(|_| read_value!($iter, $t)).collect::<Vec<_>>()
};
($iter:expr, chars) => {
read_value!($iter, String).chars().collect::<Vec<char>>()
};
($iter:expr, usize1) => {
read_value!($iter, usize) - 1
};
($iter:expr, $t:ty) => {
$iter.next().unwrap().parse::<$t>().expect("Parse error")
};
}
use std::cmp;
fn main() {
input!(n: usize, m: usize, x: [usize; n]);
let max: usize = *x.iter().max().unwrap();
let mut remainder_count = vec![vec![]; m];
for &x in x.iter() {
let r = x % m;
remainder_count[r].push(x);
}
let mut ans = 0;
for i in 0..m {
if i == 0 || i * 2 == m {
ans += remainder_count[0].len() / 2;
} else if m - i < i {
break;
} else {
let j = m - i;
let len_i = remainder_count[i].len();
let len_j = remainder_count[j].len();
ans += cmp::min(len_i, len_j);
let t = if len_i > len_j { i } else { i };
remainder_count[t].sort();
let mut pair = 0;
let mut i = 1;
while i < remainder_count[t].len() {
if remainder_count[t][i - 1] == remainder_count[t][i] {
pair += 1;
i += 2;
} else {
i += 1;
}
}
let remain = cmp::max(len_i, len_j) - cmp::min(len_i, len_j);
ans += cmp::min(remain / 2, pair);
}
}
println!("{}", ans);
}
Submission Info
Submission Time
2018-10-08 14:25:24+0900
Task
D - Pair Cards
User
kenkoooo
Language
Rust (1.15.1)
Score
0
Code Size
2557 Byte
Status
WA
Exec Time
16 ms
Memory
12540 KB
Compile Error
warning: unused variable: `max`, #[warn(unused_variables)] on by default
--> ./Main.rs:57:9
|
57 | let max: usize = *x.iter().max().unwrap();
| ^^^
warning: variable does not need to be mutable, #[warn(unused_mut)] on by default
--> ./Main.rs:9:13
|
9 | let mut s = {
| ^^^^^
...
55 | input!(n: usize, m: usize, x: [usize; n]);
| ------------------------------------------ in this macro invocation
Judge Result
Set Name
sample
all
Score / Max Score
0 / 0
0 / 700
Status
Set Name
Test Cases
sample
sample-01.txt, sample-02.txt
all
sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, 01-30.txt, sample-01.txt, sample-02.txt
Case Name
Status
Exec Time
Memory
01-01.txt
AC
2 ms
4352 KB
01-02.txt
AC
9 ms
8444 KB
01-03.txt
WA
9 ms
8444 KB
01-04.txt
AC
11 ms
8444 KB
01-05.txt
WA
11 ms
8444 KB
01-06.txt
AC
12 ms
8444 KB
01-07.txt
WA
11 ms
6396 KB
01-08.txt
AC
11 ms
6396 KB
01-09.txt
WA
11 ms
6396 KB
01-10.txt
WA
13 ms
8444 KB
01-11.txt
WA
16 ms
12540 KB
01-12.txt
AC
9 ms
8444 KB
01-13.txt
AC
11 ms
10492 KB
01-14.txt
AC
9 ms
8444 KB
01-15.txt
AC
11 ms
8444 KB
01-16.txt
AC
11 ms
8444 KB
01-17.txt
AC
11 ms
6396 KB
01-18.txt
AC
12 ms
8444 KB
01-19.txt
AC
11 ms
6396 KB
01-20.txt
AC
16 ms
12540 KB
01-21.txt
WA
9 ms
8444 KB
01-22.txt
AC
11 ms
6396 KB
01-23.txt
WA
11 ms
8444 KB
01-24.txt
WA
10 ms
6396 KB
01-25.txt
WA
11 ms
8444 KB
01-26.txt
WA
12 ms
10492 KB
01-27.txt
AC
10 ms
10492 KB
01-28.txt
WA
4 ms
8444 KB
01-29.txt
AC
2 ms
4352 KB
01-30.txt
AC
4 ms
8444 KB
sample-01.txt
AC
2 ms
4352 KB
sample-02.txt
AC
2 ms
4352 KB