#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:16777216")
using namespace std;
const double pi = 3.14159265358979323846264338327950288419716939937511;
const double eps = 1e-10;
char ch_ch_ch[1 << 20];
inline string gs() {
  scanf("%s", ch_ch_ch);
  return string(ch_ch_ch);
}
inline string gl() {
  gets(ch_ch_ch);
  return string(ch_ch_ch);
}
inline int gi() {
  int x;
  scanf("%d", &x);
  return x;
}
template <typename T>
class FenvSum {
 private:
  T* fenv;
  int n;

 public:
  FenvSum(int N) {
    n = N;
    fenv = new T[N + 1];
    memset(fenv, 0, (N + 1) * sizeof(T));
  }
  void add(int p, T val) {
    for (++p; p <= n; p += p & -p) fenv[p] += val;
  }
  T sum(int p) {
    if (p < 0) return 0;
    if (p >= n) p = n - 1;
    T res = 0;
    for (++p; p > 0; p -= p & -p) res += fenv[p];
    return res;
  }
  T rsum(int p) { return sum(n - 1) - sum(p - 1); }
  ~FenvSum() { delete fenv; }
};
int n;
long long k;
int a[100100];
int sa[100100];
void solution() {
  n = gi();
  cin >> k;
  for (int i = 0; i < (n); ++i) sa[i] = a[i] = gi();
  FenvSum<int> lf(n), rf(n);
  sort(sa, sa + n);
  int sasz = unique(sa, sa + n) - sa;
  for (int i = 0; i < (n); ++i) a[i] = lower_bound(sa, sa + sasz, a[i]) - sa;
  long long cur_inv = 0;
  for (int i = 0; i < (n - 1); ++i) {
    cur_inv += lf.rsum(a[i] + 1);
    lf.add(a[i], 1);
  }
  long long res = 0;
  int l = n - 2;
  for (int r = n - 1; r > 0; --r) {
    rf.add(a[r], 1);
    cur_inv += lf.rsum(a[r] + 1) + rf.sum(a[r] - 1);
    while (l > 0 && cur_inv > k) {
      lf.add(a[l], -1);
      cur_inv -= rf.sum(a[l] - 1) + lf.rsum(a[l] + 1);
      --l;
    }
    if (cur_inv <= k) res += l + 1;
    if (r > 1 && l + 1 == r) {
      lf.add(a[l], -1);
      cur_inv -= rf.sum(a[l] - 1) + lf.rsum(a[l] + 1);
      --l;
    }
  }
  cout << res << endl;
}
int main(int argc, char** argv) {
  solution();
  return 0;
}
