結果
問題 | No.3140 Weird Parentheses Game |
ユーザー |
|
提出日時 | 2025-05-16 23:02:46 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 1 ms / 2,000 ms |
コード長 | 1,147 bytes |
コンパイル時間 | 11,641 ms |
コンパイル使用メモリ | 399,788 KB |
実行使用メモリ | 7,844 KB |
最終ジャッジ日時 | 2025-06-25 04:35:43 |
合計ジャッジ時間 | 12,834 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 21 |
ソースコード
use proconio::{input, marker::Chars}; fn main() { input! { _n: usize, s: Chars, } println!( "{}", if recursion(&s) != 0 { "First" } else { "Second" } ); } fn recursion(s: &[char]) -> usize { if s.is_empty() { return 0; } let mut grundy_numbers = vec![]; let mut left = 0_usize; while left < s.len() { let mut right = left; let mut level = 0_usize; loop { if s[right] == '(' { level += 1; } else { level -= 1; } right += 1; if level == 0 { break; } } if left == 0 && right == s.len() { let grundy = recursion(&s[1..s.len() - 1]); return (grundy == 0) as usize; } grundy_numbers.push(recursion(&s[left..right])); left = right; } grundy_numbers.sort_unstable(); grundy_numbers.dedup(); (0..grundy_numbers.len()) .find(|&i| i != grundy_numbers[i]) .unwrap_or(grundy_numbers.len()) }