#include <bits/stdc++.h>
using namespace std;
const int N = 233;
int n, m;
long long dp[N][N][60], ans, g[100];
vector<int> G[N], H[N];
queue<int> q[N];
struct pt {
  int x, y;
  pt(int _x = 0, int _y = 0) : x(_x), y(_y) {}
} p[N], a[N];
inline pt operator+(pt a, pt b) { return pt(a.x + b.x, a.y + b.y); }
inline pt operator-(pt a, pt b) { return pt(a.x - b.x, a.y - b.y); }
inline long long operator^(pt a, pt b) {
  return 1ll * a.x * b.y - 1ll * a.y * b.x;
}
inline bool check(int A, int B, int C) {
  return ((a[A] - a[B]) ^ (a[C] - a[B])) < 0;
}
void ins(int x, int y) {
  while (!q[x].empty() && check(q[x].front(), x, y))
    ins(q[x].front(), y), q[x].pop();
  G[x].push_back(y);
  H[y].push_back(x);
  q[y].push(x);
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = (1); i <= (n); ++i) scanf("%d%d", &p[i].x, &p[i].y);
  for (int i = (1); i <= (n); ++i) {
    int cnt = 0;
    for (int j = (1); j <= (n); ++j)
      for (int k = (1); k <= (n); ++k)
        for (int p = (0); p <= (m); ++p) dp[i][j][k] = 0;
    for (int j = (1); j <= (n); ++j)
      if (j != i && (p[j].x > p[i].x || p[i].x == p[j].x && p[j].y > p[i].y))
        a[++cnt] = p[j] - p[i];
    sort(a + 1, a + cnt + 1, [&](pt x, pt y) { return (x ^ y) > 0; });
    memset(dp, 0, sizeof(dp));
    for (int j = (1); j <= (n - 1); ++j) {
      G[j].clear();
      H[j].clear();
      while (!q[j].empty()) q[j].pop();
    }
    for (int j = (1); j <= (cnt - 1); ++j) ins(j, j + 1);
    for (int j = (cnt); j >= (1); --j) {
      reverse(G[j].begin(), G[j].end());
      reverse(H[j].begin(), H[j].end());
      for (int k = (0); k <= (m); ++k) g[k] = 0;
      int t = 0;
      for (int &x : H[j]) {
        dp[x][j][1] = a[x] ^ a[j];
        while (t < G[j].size() && check(x, j, G[j][t])) {
          int y = G[j][t];
          for (int k = (1); k <= (m - 1); ++k) g[k] = max(g[k], dp[j][y][k]);
          ++t;
        }
        for (int k = (1); k <= (m - 1); ++k)
          if (g[k]) dp[x][j][k + 1] = g[k] + (a[x] ^ a[j]);
      }
    }
    for (int i = (1); i <= (n - 1); ++i)
      for (int &x : H[i]) ans = max(ans, dp[x][i][m - 2]);
  }
  printf("%.2lf\n", ans / 2.0);
  return 0;
}
