#include <bits/stdc++.h>
using namespace std;
long long int t[400004], i, j, h, cnt, a[100001], n, k;
long long int take(long long int x, long long int l, long long int r,
                   long long int tl, long long int tr) {
  if (tl > tr) return 0;
  if (tl == l && tr == r) return t[x];
  long long int m = (l + r) / 2;
  return take(x * 2, l, m, tl, min(m, tr)) +
         take(x * 2 + 1, m + 1, r, max(m + 1, tl), tr);
}
void update(long long int x, long long int l, long long int r,
            long long int g) {
  if (l == r) {
    t[x] = 1;
    return;
  }
  long long int m = (l + r) / 2;
  if (g <= m)
    update(x * 2, l, m, g);
  else
    update(x * 2 + 1, m + 1, r, g);
  t[x] = t[x * 2] + t[x * 2 + 1];
}
int main() {
  cin >> n >> k;
  for (i = 1; i <= n; i++) a[i] = i;
  for (i = 1; i <= min(n / 2, k); i++) swap(a[i], a[n - i + 1]);
  for (i = 1; i <= n; i++) {
    long long int g = take(1, 1, n, a[i] + 1, n);
    cnt += g;
    update(1, 1, n, a[i]);
  }
  cout << cnt << endl;
}
