import heapq
q = []
n = int(input())
ar = list(map(int, input().split()))
health= 0
cnt = 0
for v in ar:
if v >= 0:
cnt += 1
health += v
else:
if health + v >= 0:
cnt += 1
heapq.heappush(q, v)
health += v
elif q:
t = heapq.heappop(q)
if t < v:
health -= t
health += v
heapq.heappush(q, v)
else:
heapq.heappush(q, t)
print(cnt)
后悔药,参照大佬的代码写的。挺灵性的。
注意pop之前要判断优先队列里面是否有元素。
要是pop出来的元素没被替换,要放回优先队列里面去