#include <bits/stdc++.h>
using namespace std;
const long double PI = acos(-1.0);
pair<long double, long double> fir[1000005], a[1000005];
long double num[1000005];
pair<long double, long double> getint(pair<long double, long double> x,
                                      long double r) {
  long double p = atan2(x.second, x.first);
  p += PI;
  long double t = acos(r / sqrt(x.first * x.first + x.second * x.second));
  pair<long double, long double> ans(p - t, p + t);
  if (ans.first < 0) ans.first += 2 * PI;
  if (ans.second > 2 * PI) ans.second -= 2 * PI;
  return ans;
}
int nxt[1000005][20];
int calc(int n, long double r) {
  for (int i = 1; i <= n; i++) {
    a[i] = getint(fir[i], r);
    num[2 * i - 1] = a[i].first;
    num[2 * i] = a[i].second;
  }
  int m = 2 * n;
  sort(num + 1, num + m + 1);
  sort(a + 1, a + n + 1);
  int rx = n;
  for (int i = 1; i <= n; i++) {
    a[i].first = lower_bound(num + 1, num + m + 1, a[i].first) - num;
    a[i].second = lower_bound(num + 1, num + m + 1, a[i].second) - num;
    if (a[i].first > a[i].second)
      a[i].second += m;
    else
      a[++rx] = pair<long double, long double>(a[i].first + m, a[i].second + m);
  }
  for (int i = 0; i < 20; i++) nxt[2 * m + 1][i] = 2 * m + 1;
  int nr = 2 * m + 1;
  for (int i = 2 * m; i > 0; i--) {
    while (rx && a[rx].first > i) nr = min(nr, (int)a[rx--].second);
    nxt[i][0] = nr;
  }
  for (int i = 2 * m; i > 0; i--)
    for (int j = 1; j < 20; j++) nxt[i][j] = nxt[nxt[i][j - 1]][j - 1];
  int ans = n;
  for (int i = 1; i <= m; i++) {
    int x = i, sum = 1;
    for (int j = 19; j >= 0; j--)
      if (nxt[x][j] < i + m) {
        sum += (1 << j);
        x = nxt[x][j];
      }
    ans = min(ans, sum);
  }
  return ans;
}
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  long double l = 0, r = 1e60;
  for (int i = 1; i <= n; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    fir[i] = pair<long double, long double>(x, y);
    r = min(r, (long double)sqrt((long long)x * x + (long long)y * y));
  }
  while (r - l > 1e-8) {
    long double mid = (l + r) / 2;
    if (calc(n, mid) <= m)
      l = mid;
    else
      r = mid;
  }
  printf("%.10f\n", (double)l);
  return 0;
}
