公式
F - 連続区間の売上目標 / Sales Target for Consecutive Intervals 解説
by
F - 連続区間の売上目標 / Sales Target for Consecutive Intervals 解説
by
sounansya
\(\displaystyle A_i=\sum_{j=0}^i V_j\) \((0\le i\le N)\) とすると、求める値は以下の条件を全て満たす整数の組 \((l,r)\) の個数と一致します。
- \(0\le l < r\le N\)
- \(A_r - A_l \geq K\)
ここで、\(A\) は単調増加列であるため尺取り法を用いてこの問題を解くことができます。計算量は \(O(N)\) です。
n, k = map(int, input().split())
v = list(map(int, input().split()))
a = [0]
for val in v:
a.append(a[-1] + val)
ans = 0
r = 0
for l in range(n + 1):
while r != n + 1 and a[l] + k > a[r]:
r += 1
ans += n + 1 - r
print(ans)
投稿日時:
最終更新:
