結果
問題 |
No.3117 Reversible Tile
|
ユーザー |
|
提出日時 | 2025-03-31 19:08:06 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 690 ms / 3,000 ms |
コード長 | 693 bytes |
コンパイル時間 | 439 ms |
コンパイル使用メモリ | 82,200 KB |
実行使用メモリ | 77,296 KB |
最終ジャッジ日時 | 2025-03-31 19:08:18 |
合計ジャッジ時間 | 11,541 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 24 |
ソースコード
N, M = map(int, input().split()) A = list(map(int, input().split())) MOD = 998244353 cnt = 0 f = 0 for i in A: if i != f: cnt += 1 f = i cnt += f dp = [0]*(N+2) dp[cnt] = 1 inv2 = (MOD+1)//2 for _ in range(M): ndp = [0] * (N+2) for i in range(N+2): if i-2 >= 0: ndp[i-2] = (ndp[i-2]+dp[i]*i % 998244353*(i-1) % 998244353*inv2) % 998244353 ndp[i] = (ndp[i]+dp[i]*i % 998244353*(N+1-i)) % 998244353 if i+2 <= N+1: ndp[i+2] = (ndp[i+2]+dp[i]*(N+1-i) % 998244353*(N-i) % 998244353*inv2) % 998244353 for i in range(N+2): dp[i] = ndp[i] % 998244353 print(dp[0])