#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int MaxN = 1e5 + 10; const int MOD = 1e9 + 7; const int INF = 1e9; pair < double, double > p[MaxN]; pair < double, char > all[MaxN]; int n, k; bool can(double rad) { int res = 1; for (int i = 1; i <= n && res < k; ++i) { int c = 1, sz = 0; for (int j = 1; j <= n; ++j) { if (i == j) { continue; } double d = hypot(p[i].first - p[j].first, p[i].second - p[j].second); if (d / 2 > rad) { continue; } pair < double, double > v = make_pair((p[j].first - p[i].first) / d, (p[j].second - p[i].second) / d); double l1 = d / 2; double l2 = sqrt(rad * rad - l1 * l1); l1 /= rad; l2 /= rad; pair < double, double > p1 = make_pair(v.first * l1 + v.second * l2, v.second * l1 - v.first * l2); pair < double, double > p2 = make_pair(v.first * l1 - v.second * l2, v.second * l1 + v.first * l2); double ang1 = atan2(p1.second, p1.first); double ang2 = atan2(p2.second, p2.first); if (ang1 > ang2) { c++; } all[sz++] = make_pair(ang1, 1); all[sz++] = make_pair(ang2 + 1e-10, -1); } sort(all, all + sz); for (int j = 0; j < sz; ++j) { c += all[j].second; if (res < c) { res = c; } } } return res >= k; } int main() { // freopen("input.txt", "r", stdin); cin >> n >> k; for (int i = 1; i <= n; ++i) { cin >> p[i].first >> p[i].second; } random_shuffle(p + 1, p + n + 1); double l = 0, r = 1e4; for (int it = 0; it < 22; ++it) { double m = (l + r) / 2; if (can(m)) { r = m; } else { l = m; } } cout.precision(6); cout << fixed << (l + r) / 2.0 << '\n'; return 0; }