不知道一开始累加的叫什么处理,希望以后有机会能学,这道题的数据太小了,暴力就能过。。。以前都是10的5次方的。
#include <bits/stdc++.h>
using namespace std;
const int maxn = 10005;
int main() {
int n, m, x, a[maxn];
scanf("%d %d", &n, &m);
a[0] = 0;
for (int i = 1; i <= n; i++) {
scanf("%d", &x);
a[i] = a[i - 1] + x;
}
int ans = 0;
for (int i = 0; i < n; i++) {
int t = upper_bound(a + i + 1, a + n + 1, m + a[i]) - a;
ans += t - i - 1;
}
printf("%d", ans);
return 0;
}