题目链接:括号序列的最小代价
题面:
代码:
import heapq
def solve():
s=input()
cnt=0
buc=[0]*len(s)
for i in range(len(s)):
if s[i]=='?':
buc[i]=cnt
cnt+=1
a=[0]*cnt
b=[0]*cnt
for i in range(cnt):
a[i],b[i]=map(eval,input().split())
que=list()
cur=0
ans=0
flag=True
for i in range(len(s)):
if s[i]=='(':
cur+=1
elif s[i]==')':
cur-=1
else:
ans+=b[buc[i]]
cur-=1
heapq.heappush(que,a[buc[i]]-b[buc[i]])
if cur < 0:
if que:
ans += heapq.heappop(que)
cur += 2
else:
flag = False
break
if not flag or cur != 0:
print(-1)
else:
print(ans)
solve()