結果
問題 | No.715 集合と二人ゲーム |
ユーザー |
![]() |
提出日時 | 2019-02-09 14:31:42 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 56 ms / 2,000 ms |
コード長 | 1,568 bytes |
コンパイル時間 | 13,406 ms |
コンパイル使用メモリ | 378,292 KB |
実行使用メモリ | 11,744 KB |
最終ジャッジ日時 | 2024-07-01 19:10:46 |
合計ジャッジ時間 | 16,701 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 60 |
ソースコード
#[allow(unused_imports)]use std::cmp::*;#[allow(unused_imports)]use std::collections::*;fn read<T: std::str::FromStr>() -> T {let mut s = String::new();std::io::stdin().read_line(&mut s).ok();s.trim().parse().ok().unwrap()}fn read_vec<T: std::str::FromStr>() -> Vec<T> {read::<String>().split_whitespace().map(|e| e.parse().ok().unwrap()).collect()}fn main() {let n: usize = read();let mut a: Vec<u64> = read_vec();a.sort();let mut mountains = Vec::new();mountains.push(1);for i in 1..n {if a[i] == a[i - 1] + 1 {let last_elem = mountains.len() - 1;mountains[last_elem] += 1;} else {mountains.push(1);}}let mem = vec![0, 1, 1, 2, 0, 3, 1, 1, 0, 3, 3, 2, 2, 4, 0, 5, 2, 2, 3, 3, 0, 1, 1, 3, 0, 2, 1, 1, 0, 4,5, 2, 7, 4, 0, 1, 1, 2, 0, 3, 1, 1, 0, 3, 3, 2, 2, 4, 4, 5, 5, 2, 3, 3, 0, 1, 1, 3, 0, 2,1, 1, 0, 4, 5, 3, 7, 4, 8, 1, 1, 2, 0, 3, 1, 1, 0, 3, 3, 2, 2, 4, 4,];let mem_cycle = vec![5, 5, 9, 3, 3, 0, 1, 1, 3, 0, 2, 1, 1, 0, 4, 5, 3, 7, 4, 8, 1, 1, 2, 0, 3, 1, 1, 0, 3, 3,2, 2, 4, 4,];let grundy = |i| {if i < mem.len() {mem[i]} else {mem_cycle[(i - mem.len()) % mem_cycle.len()]}};// println!("{:?}", mem);let result = mountains.iter().fold(0, |s, &x| s ^ grundy(x));if result == 0 {println!("Second");} else {println!("First");}}