結果

問題 No.3143 Colorless Green Parentheses Sleep Furiously
ユーザー june19312
提出日時 2025-05-16 23:05:18
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 2,487 bytes
コンパイル時間 439 ms
コンパイル使用メモリ 82,776 KB
実行使用メモリ 119,756 KB
最終ジャッジ日時 2025-05-17 00:34:51
合計ジャッジ時間 6,503 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 46 WA * 3
権限があれば一括ダウンロードができます

ソースコード

diff #

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

if S.count("(") != S.count(")"):
    print("No")
    exit()

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

#print(a,b,c)
if K < b*2 + a:
    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()

ans += ["+1"]*nokori

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