#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);
    }
}