func_code_string: #include <bits/stdc++.h>   using namespace std;   const double PI = 3.14159265358979323846;   const double EPS = 1e-15;   const int INF = 1e9 + 7;   const long long LINF = 8e18 + 7;   const int N = 2e5 + 7;   vector<long long> t[4 * N];   int a[N];   long long s[N];   void build(int v, int L, int R) {     if (L + 1 == R) {       t[v].push_back(s[L]);       return;     }     int M = L + R >> 1;     build(v << 1, L, M);     build(v << 1 | 1, M, R);     t[v].resize(t[v << 1].size() + t[v << 1 | 1].size());     merge(t[v << 1].begin(), t[v << 1].end(), t[v << 1 | 1].begin(),           t[v << 1 | 1].end(), t[v].begin());   }   int get(int v, int L, int R, int l, int r, long long val) {     if (L == l && R == r) {       return t[v].end() - upper_bound(t[v].begin(), t[v].end(), val);     }     int M = L + R >> 1;     int ans = 0;     if (l < M) {       ans += get(v << 1, L, M, l, min(M, r), val);     }     if (r > M) {       ans += get(v << 1 | 1, M, R, max(l, M), r, val);     }     return ans;   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     int n;     long long t;     cin >> n >> t;     for (int i = 0; i < int(n); ++i) {       cin >> a[i];       s[i + 1] = a[i] + s[i];     }     build(1, 0, n + 1);     long long ans = 0;     for (int i = 0; i < int(n); ++i) {       ans += get(1, 0, n + 1, 0, i + 1, s[i + 1] - t);     }     cout << ans << endl;   }   