結果

問題 No.2031 Colored Brackets
ユーザー lloyzlloyz
提出日時 2023-09-25 21:58:27
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 123 ms / 2,000 ms
コード長 802 bytes
コンパイル時間 177 ms
コンパイル使用メモリ 82,304 KB
実行使用メモリ 76,544 KB
最終ジャッジ日時 2024-07-18 17:39:19
合計ジャッジ時間 3,622 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 30
権限があれば一括ダウンロードができます

ソースコード

diff #

n = int(input())
S = list(input())
mod = 998244353

Open = [0 for _ in range(n)]
Close = [0 for _ in range(n)]
for i in range(n):
    if S[i] == '(':
        Open[i] += 1
    else:
        Close[i] += 1
    Open[i] += Open[i - 1]
    Close[i] += Close[i - 1]

DP = [0 for _ in range(n + 1)]
DP[0] = 1
for i in range(n):
    NDP = [0 for _ in range(n + 1)]
    dif = Open[i] - Close[i]
    if S[i] == '(':
        for j in range(i + 1):
            NDP[j + 1] += DP[j]
            NDP[j + 1] %= mod
            NDP[j] += DP[j]
            NDP[j] %= mod
    else:
        for j in range(i + 1):
            if j > 0:
                NDP[j - 1] += DP[j]
                NDP[j - 1] %= mod
            if dif - j >= 0:
                NDP[j] += DP[j]
                NDP[j] %= mod
    DP = NDP
print(DP[0])
0