#include <bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
typedef tree<int , null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> OrderedSet;
// find_by_order : element at index i
// order_of_key : how many elements < A
#define int long long
void solve(int tc) {
int n, k; cin >> n >> k;
vector<int> a(n+1, 0);
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i <= n; i++) a[i] += a[i-1];
OrderedSet os;
int ans = 0;
for (int r = 1; r <= n; r++) {
os.insert(a[r-1] - k * (r-1));
int tmp = a[r] - k*r;
ans += os.order_of_key(tmp + 1);
}
cout << ans << '\n';
}
signed main() {
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int t = 1;
// cin >> t;
for (int i = 1; i <= t; i++){
solve(i);
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgojaW5jbHVkZTxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7Cgp0eXBlZGVmIHRyZWU8aW50ICwgbnVsbF90eXBlLCBsZXNzX2VxdWFsPGludD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+IE9yZGVyZWRTZXQ7Ci8vIGZpbmRfYnlfb3JkZXIgOiBlbGVtZW50IGF0IGluZGV4IGkKLy8gb3JkZXJfb2Zfa2V5ICA6IGhvdyBtYW55IGVsZW1lbnRzIDwgQQoKI2RlZmluZSBpbnQgbG9uZyBsb25nCgp2b2lkIHNvbHZlKGludCB0YykgewogICAgaW50IG4sIGs7IGNpbiA+PiBuID4+IGs7CiAgICB2ZWN0b3I8aW50PiBhKG4rMSwgMCk7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBhW2ldOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBhW2ldICs9IGFbaS0xXTsKICAgIE9yZGVyZWRTZXQgb3M7CiAgICBpbnQgYW5zID0gMDsKICAgIGZvciAoaW50IHIgPSAxOyByIDw9IG47IHIrKykgewogICAgICAgIG9zLmluc2VydChhW3ItMV0gLSBrICogKHItMSkpOwogICAgICAgIGludCB0bXAgPSBhW3JdIC0gaypyOwogICAgICAgIGFucyArPSBvcy5vcmRlcl9vZl9rZXkodG1wICsgMSk7CiAgICB9CiAgICBjb3V0IDw8IGFucyA8PCAnXG4nOwp9CgpzaWduZWQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CiAgICBpbnQgdCA9IDE7CiAgICAvLyBjaW4gPj4gdDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHQ7IGkrKyl7CiAgICAgICAgc29sdmUoaSk7CiAgICB9Cn0=