#include <bits/stdc++.h>
using namespace std;
struct BIT {
  vector<int> ft;
  BIT() {}
  BIT(int n) : ft(n) {}
  void update(int i, int x) {
    while (i < ft.size()) {
      ft[i] += x;
      i += i & -i;
    }
  }
  int getSum(int i) {
    int sum = 0;
    while (i) {
      sum += ft[i];
      i -= i & -i;
    }
    return sum;
  }
  int query(int a, int b) {
    if (!b) return 0;
    return getSum(b) - getSum(a - 1);
  }
};
const int MX = 100005;
int n, a[MX];
long long k, res = 0, acu = 0;
vector<int> con;
BIT ini, fin;
int i, j;
void insert(int ind, BIT &in) {
  acu += ini.query(a[ind] + 1, con.size() + 2);
  acu += fin.query(1, a[ind] - 1);
  in.update(a[ind], 1);
}
void delet(int ind, BIT &in) {
  acu -= ini.query(a[ind] + 1, con.size() + 2);
  acu -= fin.query(1, a[ind] - 1);
  in.update(a[ind], -1);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    con.push_back(a[i]);
  }
  sort(con.begin(), con.end());
  con.erase(unique(con.begin(), con.end()), con.end());
  for (int i = 0; i < n; i++)
    a[i] = lower_bound(con.begin(), con.end(), a[i]) - con.begin() + 1;
  ini = BIT(con.size() + 5), fin = BIT(con.size() + 5);
  i = 0, j = n;
  while (i < n) {
    insert(i, ini);
    while (j > i && acu <= k) {
      j--;
      insert(j, fin);
    }
    while ((j < n && acu > k) || j <= i) {
      delet(j, fin);
      j++;
    }
    res += n - j;
    i++;
  }
  cout << res << '\n';
  return 0;
}
