用add维护窗口的总和,每次尽量从窗口最右边的盒子减少,如果不够,就继续往左移,直到满足要求,用res记录操作的次数
虽然比较麻烦,但也是比较神秘地通关了
n,m,x = map(int,input().split())
a = list(map(int,input().split())) + [0]
add = sum(a[:m])
res = 0
for i in range(n-m+1):
j = i + m - 1
while add > x:
mi = min(a[j],add-x)
a[j] -= mi
add -= mi
res += mi
j -= 1
add -= a[i]
add += a[i+m]
print(res)

京公网安备 11010502036488号