結果

問題 No.3143 Colorless Green Parentheses Sleep Furiously
ユーザー june19312
提出日時 2025-05-16 22:24:26
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 2,191 bytes
コンパイル時間 325 ms
コンパイル使用メモリ 82,356 KB
実行使用メモリ 114,824 KB
最終ジャッジ日時 2025-05-17 00:31:25
合計ジャッジ時間 7,923 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 20 WA * 29
権限があれば一括ダウンロードができます

ソースコード

diff #

N,K = map(int,input().split())
S = input()

a = S.count("((")
b = S.count("()")
c = S.count("))")

if not b*2 + a <= K <= b*2 + a + c + 2:
    print("No")
    exit()

nokori = K - (b*2+a)
SS = list(S)
ans = []
while SS:
    if len(SS) >= 2:
        if SS[-2] == "(" and SS[-1] == ")":
            ans.append("(")
            ans.append("1")
            ans.append("+")
            ans.append("1")
            ans.append(")")
            SS.pop()
            SS.pop()
        else:
            nex = SS.pop()
            if nex == "(":
                ans.append(")")
            else:
                ans.append("(")
    else:
            nex = SS.pop()
            if nex == "(":
                ans.append(")")
            else:
                ans.append("(")

SS = ans[:]

ans = []
while SS:
    if len(SS) >= 2:
        if SS[-2] == ")" and SS[-1] == ")":
            ans.append("(")
            ans.append("1")
            ans.append("+")
            ans.append("(")
            SS.pop()
            SS.pop()
        elif SS[-2] == "(" and SS[-1] == "(" and nokori > 0:
            ans.append(")")
            ans.append("+")
            ans.append("1")
            ans.append(")")
            SS.pop()
            SS.pop()
            nokori -= 1
        else:
            nex = SS.pop()
            if nex == "(":
                ans.append(")")
            elif nex == ")":
                ans.append("(")
            else:
                ans.append(nex)
    else:
            nex = SS.pop()
            if nex == "(":
                ans.append(")")
            elif nex == ")":
                ans.append("(")
            else:
                ans.append(nex)

SS = ans[:]

ans = []
while SS:
    if len(SS) >= 2:
        if SS[-2] == ")" and SS[-1] == "(":
            ans.append("(")
            ans.append("+")
            ans.append(")")
            SS.pop()
            SS.pop()
        else:
            nex = SS.pop()
            ans.append(nex)
    else:
            nex = SS.pop()
            ans.append(nex)

ans.reverse()

if nokori == 1:
    ans.append("+1")
elif nokori == 2:
    ans = ["1+"] + ans
    ans.append("+1")

ans2 = "".join(ans)
print("Yes")
print(ans2)
0