結果
問題 |
No.3117 Reversible Tile
|
ユーザー |
|
提出日時 | 2025-04-18 21:57:16 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 297 ms / 3,000 ms |
コード長 | 570 bytes |
コンパイル時間 | 504 ms |
コンパイル使用メモリ | 81,992 KB |
実行使用メモリ | 76,892 KB |
最終ジャッジ日時 | 2025-04-18 21:57:23 |
合計ジャッジ時間 | 5,484 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 24 |
ソースコード
MOD=998244353 N,M=map(int,input().split()) A=list(map(int,input().split())) flp=[A[0]] for i in range(N-1): if A[i]==A[i+1]: flp.append(0) else: flp.append(1) flp.append(A[-1]) dp=[0]*(N+2) dp[sum(flp)]=1 for i in range(M): ndp=[0]*(N+2) for j in range(N+2): dp[j]%=MOD if dp[j]==0: continue one=j zero=N+1-j ndp[j]+=one*zero*dp[j] if zero>=2: ndp[j+2]+=zero*(zero-1)*dp[j]//2 if one>=2: ndp[j-2]+=one*(one-1)*dp[j]//2 dp=ndp print(dp[0]%MOD)