#include <bits/stdc++.h>
using namespace std;
int n, k, m, s[210], K;
long long f[210][210][210], ans = 0;
vector<int> b[210], c[210];
struct point {
  long long x, y;
  point friend operator-(point a, point b) {
    return (point){a.x - b.x, a.y - b.y};
  }
  long long friend operator*(point a, point b) {
    return a.x * b.y - a.y * b.x;
  };
  bool friend operator==(point a, point b) { return a.x == b.x && a.y == b.y; }
} p[210], a[210], ST;
bool cnt(point a, point b) {
  if (a == ST) return 1;
  if (b == ST) return 0;
  return ((a - ST) * (b - ST)) > 0;
}
bool cmt(int x, int y) { return cnt(a[x], a[y]); }
int main() {
  scanf("%d%d", &n, &K);
  for (int i = 1; i <= n; i++) scanf("%I64d%I64d", &p[i].x, &p[i].y);
  for (int i = 1; i <= n; i++) {
    ST = p[i];
    m = 0;
    for (int j = 1; j <= n; j++)
      if (p[j].y >= p[i].y) a[++m] = p[j];
    sort(a + 1, a + m + 1, cnt);
    for (int x = 1; x <= m; x++)
      for (int y = 1; y <= m; y++)
        for (int k = 1; k <= K; k++) f[x][y][k] = -0x7fffffffffffffff;
    for (int x = 1; x <= m; x++) f[x][1][2] = 0;
    for (int x = 1; x <= m; x++) b[x].clear(), c[x].clear();
    for (int x = 1; x <= m - 1; x++) {
      s[s[0] = 1] = x;
      for (int y = x + 1; y <= m; y++) {
        while (s[0] > 1 &&
               (a[y] - a[s[s[0]]]) * (a[s[s[0]]] - a[s[s[0] - 1]]) < 0)
          s[0]--;
        s[++s[0]] = y;
        if (s[s[0] - 1] == x) b[y].push_back(x), c[x].push_back(y);
      }
      ST = a[x];
      sort(b[x].begin(), b[x].end(), cmt);
      sort(c[x].begin(), c[x].end(), cmt);
      if (x > 1)
        for (int k = 1; k <= K - 1; k++) {
          int j = -1;
          long long mx = -0x7fffffffffffffff;
          int cs = c[x].size() - 1, bs = b[x].size() - 1;
          for (int l = 0; l <= cs; l++) {
            int y = c[x][l];
            while (j < bs && (a[x] - a[b[x][j + 1]]) * (a[y] - a[x]) > 0)
              mx = max(mx, f[x][b[x][++j]][k]);
            if (mx >= 0)
              f[y][x][k + 1] =
                  max(f[y][x][k + 1], mx + abs((a[x] - p[i]) * (a[y] - p[i])));
          }
        }
    }
    for (int x = 1; x <= m; x++)
      for (int y = 1; y <= m; y++) ans = max(ans, f[x][y][K]);
  }
  printf("%.2lf\n", ans * 0.5);
}
