結果
問題 |
No.3043 括弧列の数え上げ
|
ユーザー |
|
提出日時 | 2025-03-20 17:04:06 |
言語 | Rust (1.83.0 + proconio) |
結果 |
TLE
|
実行時間 | - |
コード長 | 972 bytes |
コンパイル時間 | 12,547 ms |
コンパイル使用メモリ | 391,820 KB |
実行使用メモリ | 14,776 KB |
最終ジャッジ日時 | 2025-03-20 17:04:38 |
合計ジャッジ時間 | 17,831 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 4 TLE * 1 -- * 40 |
ソースコード
#![allow(dead_code, unused_imports, unused_macros, non_snake_case)] use proconio::{ input, input_interactive, marker::{Bytes, Chars, Usize1}, }; fn main() { input! { n: usize } const MOD: i64 = 998244353; // dp[i][j] = i 文字使って深さが j である (個数, 総和) let mut prv = vec![(0, 0); n + 1]; let mut nxt = vec![(0, 0); n + 1]; prv[0] = (1, 0); for _ in 0..n { for j in 0..=n { // ( if j > 0 { nxt[j].0 += prv[j - 1].0; nxt[j].1 += prv[j - 1].1; } // ) if j < n { nxt[j].0 += prv[j + 1].0; nxt[j].1 += prv[j + 1].1 + prv[j + 1].0 * j as i64 % MOD; } nxt[j].0 %= MOD; nxt[j].1 %= MOD; } eprintln!("{:?}", &nxt); std::mem::swap(&mut prv, &mut nxt); nxt.fill((0, 0)); } println!("{}", prv[0].1); }