小M给你一串含有c个正整数的数组, 想让你帮忙求出有多少个下标的连续区间, 它们的和大于等于x。
小M给你一串含有c个正整数的数组, 想让你帮忙求出有多少个下标的连续区间, 它们的和大于等于x。
第一行两个整数c x(0 < c <= 1000000, 0 <= x <= 100000000)
第二行有c个正整数(每个正整数小于等于100)。
输出一个整数,表示所求的个数。
3 6 2 4 7
4
对于有3个整数构成的数组而言,总共有6个下标连续的区间,他们的和分别为:
2 = 2
4 = 4
7 = 7
2 + 4 = 6
4 + 7 = 11
2 + 4 + 7 = 13
其中有4个和大于等于6,所以答案等于4。
"""" 正整数数组,sum(a[i:j])>x,则sum(a[i:j+k])都大于x,j+k<=n,k为满足条件的个数 使用滑动窗口优化 """ if __name__ == "__main__": n, x = map(int, input().strip().split()) a = list(map(int, input().strip().split())) i, j, t_sum, ans = 0, 0, 0, 0 while True: while j < n and t_sum < x: t_sum += a[j] j += 1 if j == n and t_sum < x: break ans += n - j + 1 t_sum -= a[i] i += 1 print(ans)