#include <bits/stdc++.h>
using namespace std;
struct s {
  long long l;
  long long b;
};
s a[300001];
long long f[300001];
bool comp(s x, s y) {
  if (x.b > y.b)
    return true;
  else if (x.b < y.b)
    return false;
  else
    return x.l > y.l;
}
int main() {
  priority_queue<long long> que;
  int n, k;
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &a[i].l, &a[i].b);
  }
  sort(a, a + n, comp);
  long long ans = 0;
  f[0] = a[0].l;
  que.push(a[0].l);
  for (int i = 1; i < k; i++) {
    que.push(a[i].l);
    f[i] = f[i - 1] + a[i].l;
  }
  for (int i = k; i < n; i++) {
    int t = que.top();
    que.pop();
    int k;
    if (t > a[i].l)
      k = t;
    else
      k = a[i].l;
    f[i] = f[i - 1] - t + k;
    que.push(k);
  }
  ans = f[0] * a[0].b;
  for (int i = 1; i < n; i++) {
    if (ans < (f[i - 1] + a[i].l) * a[i].b) {
      ans = (f[i - 1] + a[i].l) * a[i].b;
    }
  }
  cout << ans << endl;
  return 0;
}
