#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define il inline
const int N = 1000005;
int n, p;
ll pre[N], s[N], c[N];
ll ans;
il void add(int x, int y) {
for (; x <= n; x += x & -x) c[x] += y;
}
il int ask(int x) {
int res = 0;
for (; x; x -= x & -x) res += c[x];
return res;
}
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; ++i) {
int x; scanf("%d", &x);
pre[i] = pre[i - 1] + x;
}
scanf("%d", &p);
int cnt = 0;
for (int i = 0; i <= n; ++i) s[++cnt] = pre[i] - (ll)p * i;
std::sort(s + 1, s + cnt + 1);
int m = unique(s + 1, s + cnt + 1) - (s + 1);
for (int i = 0; i <= n; ++i) {
int id = lower_bound(s + 1, s + m + 1, pre[i] - (ll)p * i) - s;
ans += ask(id);
add(id, 1);
}
printf("%lld", ans);
return 0;
}
思路应该没什么问题。
我寻思着该开的 long long 也都开了