結果
問題 |
No.3075 Mex Recurrence Formula
|
ユーザー |
![]() |
提出日時 | 2025-03-28 22:23:14 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 140 ms / 2,000 ms |
コード長 | 921 bytes |
コンパイル時間 | 14,434 ms |
コンパイル使用メモリ | 404,272 KB |
実行使用メモリ | 23,660 KB |
最終ジャッジ日時 | 2025-03-28 22:23:34 |
合計ジャッジ時間 | 17,817 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 46 |
ソースコード
use std::collections::{BTreeSet, HashMap}; use proconio::{input, marker::Usize1}; fn main() { input! { n: usize, x: Usize1, mut a: [usize; n], } // 周期 n + 1 っぽい let mut unused = (0..=n).collect::<BTreeSet<_>>(); let mut used = HashMap::new(); for &a in &a { unused.remove(&a); *used.entry(a).or_insert(0) += 1; } for i in 0..n + 2 { let &mex = unused.iter().next().unwrap(); a.push(mex); unused.remove(&mex); *used.entry(mex).or_insert(0) += 1; let front = a[i]; let &cnt = used.get(&front).unwrap(); if cnt > 1 { *used.get_mut(&front).unwrap() -= 1; } else { used.remove(&front); unused.insert(front); } } let ans = if x < a.len() { a[x] } else { a[x % (n + 1) + n + 1] }; println!("{}", ans); }