#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
typedef double ld;
const int MAXN = 65;
const double EPS = 1e-7;

struct pt
{
    double x, y;

    pt()
    {
        x = 0;
        y = 0;
    }

    pt (double __x, double __y)
    {
        x = __x;
        y = __y;
    }

    pt add (pt p)
    {
        return pt(x + p.x, y + p.y);
    }

    pt sub (pt p)
    {
        return pt(x - p.x, y - p.y);
    }

    double dist()
    {
        return sqrt (x * x + y * y);
    }

    pt norm()
    {
        double d = sqrt (x * x + y * y);
        return pt(x / d, y / d);
    }

    pt mult (double d)
    {
        return pt(x * d, y * d);
    }

    pt rot()
    {
        return pt(-y, x);
    }
};

int N, K;
double c[MAXN];
pt p[MAXN];
double r[MAXN];

bool okay (pt goal)
{
    int ans = 0;
    for (int i = 0; i < N; i++)
        if (goal.sub(p[i]).dist() < r[i] + EPS)
            ans++;
    return ans >= K;
}

bool works (ld t)
{
    for (int i = 0; i < N; i++)
        r[i] = t / c[i];

    for (int i = 0; i < N; i++)
        if (okay (p[i]))
            return true;

    for (int i = 0; i < N; i++)
        for (int j = i + 1; j < N; j++)
        {
            double dv = p[i].sub(p[j]).dist();
            if (dv - EPS < abs (r[i] - r[j])) continue;
            if (dv + EPS > r[i] + r[j]) continue;

            double nv = r[i] * r[i] - r[j] * r[j];
            double pv = nv / dv;
            double av = (dv + pv) / 2;

            pt dir = p[j].sub(p[i]).norm();
            pt pg = p[i].add(dir.mult(av));

            double ov = sqrt (r[i] * r[i] - av * av);
            pt pdone1 = pg.add(dir.rot().mult(ov));
            pt pdone2 = pg.add(dir.rot().mult(-ov));
            if (okay (pdone1) || okay (pdone2))
                return true;
        }
    return false;
}

int main()
{
    ios_base::sync_with_stdio(0);

    cin >> N >> K;
    for (int i = 0; i < N; i++)
        cin >> p[i].x >> p[i].y >> c[i];

    if (K == 1)
    {
        cout << "0.0\n";
        return 0;
    }

    ld lo = 0., hi = 1e6;
    for (int i = 0; i < 50; i++)
    {
        ld mid = (lo + hi) / 2;
        if (works (mid))
            hi = mid;
        else
            lo = mid;
    }

    cout << fixed << setprecision(8);
    cout << lo << "\n";
}