結果
問題 | No.2783 4-33 Easy |
ユーザー |
|
提出日時 | 2024-06-14 22:59:57 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 883 ms / 2,000 ms |
コード長 | 924 bytes |
コンパイル時間 | 289 ms |
コンパイル使用メモリ | 82,792 KB |
実行使用メモリ | 86,872 KB |
最終ジャッジ日時 | 2024-06-14 23:00:21 |
合計ジャッジ時間 | 22,632 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 26 |
ソースコード
from copy import deepcopy MOD = 998244353 N = int(input()) A = list(map(int, input().split())) B = input().split() X = [] Y = [] for i in range(N): if B[i].isdigit(): Y.append((A[i], int(B[i]))) elif B[i] == 'X': X.append((A[i], 0)) DP = [[[0 for b in range(34)] for a in range(5)] for i in range(9)] DP[0][0][0] = 1 for u, d in Y: dp = deepcopy(DP) for i in range(len(DP)): for j in range(len(DP[i])): for k in range(len(DP[i][j])): if i >= 1 and j >= u and k >= d: dp[i][j][k] = (DP[i][j][k]+DP[i-1][j-u][k-d]) % MOD DP = deepcopy(dp) DP9 = [[0 for b in range(34)] for a in range(5)] for u, d in X: dp9 = deepcopy(DP9) for j in range(len(DP9)): for k in range(len(DP9[j])): if j >= u and k >= d: dp9[j][k] = (DP9[j][k]+DP[8][j-u][k-d]) % MOD DP9 = deepcopy(dp9) print(DP9[4][33])