func_code_string: #include <bits/stdc++.h>   using namespace std;   const double eps = 1E-8;   const int dx4[4] = {1, 0, 0, -1};   const int dy4[4] = {0, -1, 1, 0};   const int inf = 0x3f3f3f3f;   const int N = 2E5 + 7;   int tree[2][N];   int a[N], p[N];   int n;   long long k;   int lowbit(int x) { return x & (-x); }   void update(int o, int x, int delta) {     if (!o) x = n - x + 1;     for (int i = x; i <= n; i += lowbit(i)) tree[o][i] += delta;   }   int Hash(int x) { return lower_bound(p + 1, p + n + 1, x) - p; }   int Sum(int o, int x) {     if (!o) x = n - x + 1;     int res = 0;     for (int i = x; i >= 1; i -= lowbit(i)) res += tree[o][i];     return res;   }   int main() {     cin >> n >> k;     for (int i = 1; i <= n; i++) cin >> a[i], p[i] = a[i];     sort(p + 1, p + n + 1);     long long total = 0;     for (int i = n; i >= 1; i--) {       int x = Hash(a[i]);       a[i] = x;       total += Sum(1, a[i] - 1);       update(1, a[i], 1);     }     int r = 1;     long long ans = 0;     for (int l = 1; l <= n; l++) {       total += Sum(0, a[l] + 1) + Sum(1, a[l] - 1);       update(0, a[l], 1);       while ((r <= l || total > k) && r <= n) {         total -= Sum(0, a[r] + 1) + Sum(1, a[r] - 1);         update(1, a[r], -1);         r++;       }       ans += n - r + 1;     }     cout << ans << endl;     return 0;   }   