#include <bits/stdc++.h>
using namespace std;
inline void read(int &x) {
  int v = 0, f = 1;
  char c = getchar();
  while (!isdigit(c) && c != '-') c = getchar();
  if (c == '-')
    f = -1;
  else
    v = (c & 15);
  while (isdigit(c = getchar())) v = (v << 1) + (v << 3) + (c & 15);
  x = v * f;
}
inline void read(long long &x) {
  long long v = 0ll, f = 1ll;
  char c = getchar();
  while (!isdigit(c) && c != '-') c = getchar();
  if (c == '-')
    f = -1;
  else
    v = (c & 15);
  while (isdigit(c = getchar())) v = (v << 1) + (v << 3) + (c & 15);
  x = v * f;
}
inline void readc(char &x) {
  char c;
  while (((c = getchar()) == ' ') || c == '\n')
    ;
  x = c;
}
const double pi = acos(-1);
int n, i, j;
double px[100005], py[100005];
long long m;
double l, r, mid;
int c[100005][2], cc[100005];
struct bit {
  int len, a[200005];
  void init(int x) {
    len = x;
    int i;
    for (((i)) = (1); ((i)) <= ((len)); ((i))++) a[i] = 0;
  }
  void add(int x, int y) {
    while (x <= len) {
      a[x] += y;
      x += (x & -x);
    }
  }
  int qry(int x) {
    int s = 0;
    while (x) {
      s += a[x];
      x -= (x & -x);
    }
    return s;
  }
} tr;
long long calc(double x) {
  long long ans = 1ll * n * (n - 1) / 2;
  int i, tt = 0;
  vector<pair<double, int> > p;
  for (((i)) = (1); ((i)) <= ((n)); ((i))++) {
    cc[i] = 0;
    if (px[i] * px[i] + py[i] * py[i] <= x * x) {
      continue;
    }
    double dlt = acos(x / sqrt(px[i] * px[i] + py[i] * py[i]));
    double ang = atan2(py[i], px[i]);
    double t1 = ang - dlt, t2 = ang + dlt;
    while (t1 < 0) t1 += pi * 2;
    while (t1 >= pi * 2) t1 -= pi * 2;
    while (t2 < 0) t2 += pi * 2;
    while (t2 >= pi * 2) t2 -= pi * 2;
    p.push_back(make_pair(t1, i));
    p.push_back(make_pair(t2, i));
  }
  sort((p).begin(), (p).end());
  for (__typeof((p).begin()) it = (p).begin(); it != (p).end(); it++) {
    c[it->second][cc[it->second]++] = ++tt;
  }
  tr.init(tt);
  tt = 0;
  for (__typeof((p).begin()) it = (p).begin(); it != (p).end(); it++) {
    tt++;
    if (c[it->second][0] == tt) {
      tr.add(tt, 1);
    } else {
      tr.add(c[it->second][0], -1);
      ans -= tr.qry(tt) - tr.qry(c[it->second][0]);
    }
  }
  return ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  ;
  cin >> n >> m;
  for (((i)) = (1); ((i)) <= ((n)); ((i))++) {
    cin >> px[i] >> py[i];
  }
  l = 0;
  r = 2e4;
  for (((i)) = (1); ((i)) <= ((60)); ((i))++) {
    mid = (l + r) / 2;
    if (calc(mid) < m) {
      l = mid;
    } else
      r = mid;
  }
  printf("%.12lf\n", l);
  return 0;
}
