黒ココアさんのメモ置き場

メモを置いたり置かなかったり

ABC339 C - Perfect Bus

atcoder.jp

問題

  • バスが走ってるよ
  • N個のバス停で、バスの中の人が$A_i$変化したよ
  • バスの中の人は、最終的に何人?考えうる最小値を答えてね

成約

  • $1 \leq N \leq 2 \times 10^{5}$
  • $-10^{9} \leq A_i \leq 10^{9}$

思考

  • 最初0人からスタートすると、途中のバス停で人数マイナスになっちゃうねぇ…
  • とりあえず全バス停での変動の結果は累積和で取れるので…
    • 累積和を見つつ、最小値が0未満なら、その人数下駄を履かせてあげる(=初期人数)イメージ

コード

from itertools import accumulate

N = int(input())
A_L = list(map(int, input().split()))

accum = list(accumulate(A_L))
print(accum[-1] - min(min(accum),0))