結果

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

ソースコード

diff #

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

a,b,c = 0,0,0
for i,v in enumerate(S):
    if i == len(S)-1:
        continue
    if S[i] == "(" and S[i+1] == "(":
        a += 1

for i,v in enumerate(S):
    if i == len(S)-1:
        continue
    if S[i] == ")" and S[i+1] == ")":
        c += 1

for i,v in enumerate(S):
    if i == len(S)-1:
        continue
    if S[i] == "(" and S[i+1] == ")":
        b += 1

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