output_description: Print the answer.
  
  It will be considered correct if its absolute or relative error from our
  answer is at most 10^{-6}.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N K
      x_1 y_1 c_1
      \vdots
      x_N y_N c_N
attempt: """
  答えをにブタン
  円がKこ以上重なる点が生まれる最小のtを求める
  どうやって判定する？
  """
  
  
  def wantnum(m):
  
      plis = []
  
      for i in range(N):
          plis.append([xyc[i][0], xyc[i][1]])
  
      for i in range(N):
          for j in range(i):
  
              xA = xyc[i][0]
              yA = xyc[i][1]
              xB = xyc[j][0]
              yB = xyc[j][1]
              r1 = m / xyc[i][2]
              r2 = m / xyc[j][2]
  
              X = xB - xA
              Y = yB - yA
  
              a = (X**2 + Y**2 + r1**2 - r2**2) / 2
  
              retx1 = (a * X + Y * (((X**2 + Y**2) * (r1**2) - a**2) ** 0.5)) / (
                  X**2 + Y**2
              )
              rety1 = (a * Y - X * (((X**2 + Y**2) * (r1**2) - a**2) ** 0.5)) / (
                  X**2 + Y**2
              )
  
              retx1 += xA
              rety1 += yA
  
              retx2 = (a * X - Y * (((X**2 + Y**2) * (r1**2) - a**2) ** 0.5)) / (
                  X**2 + Y**2
              )
              rety2 = (a * Y + X * (((X**2 + Y**2) * (r1**2) - a**2) ** 0.5)) / (
                  X**2 + Y**2
              )
  
              retx2 += xA
              rety2 += yA
  
              if type(retx1) is not complex and type(rety1) is not complex:
                  plis.append([retx1, rety1])
              if type(retx2) is not complex and type(rety2) is not complex:
                  plis.append([retx2, rety2])
  
      ans = 0
      for nx, ny in plis:
  
          nnum = 0
  
          for i, j, r in xyc:
              if (i - nx) ** 2 + (j - ny) ** 2 < (m / r) ** 2 + 10 ** (-7):
                  nnum += 1
  
          ans = max(ans, nnum)
  
      return ans
  
  
  N, K = map(int, input().split())
  
  xyc = []
  l = 0
  r = 0
  
  for i in range(N):
  
      x, y, c = map(int, input().split())
      xyc.append([x, y, c])
  
      r = max(r, c * ((x**2 + y**2) ** 0.5))
  
  while r - l > 10 ** (-7) and r - l > l * (10 ** (-7)):
  
      m = (r + l) / 2
  
      ret = wantnum(m)
      # print (ret,m)
  
      if ret >= K:
          r = m
      else:
          l = m
  
  print(r)
  
problem_description: Statement
  
  Takahashi wants to grill N pieces of meat on a grilling net, which can be seen
  as a two-dimensional plane. The coordinates of the i-th piece of meat are
  \left(x_i, y_i\right), and its _hardness_ is c_i.
  
  Takahashi can use one heat source to grill the meat. If he puts the heat
  source at coordinates \left(X, Y\right), where X and Y are real numbers, the
  i-th piece of meat will be ready to eat in c_i \times \sqrt{\left(X -
  x_i\right)^2 + \left(Y-y_i\right)^2} seconds.
  
  Takahashi wants to eat K pieces of meat. Find the time required to have K or
  more pieces of meat ready if he put the heat source to minimize this time.
samples: [{"input": "4 3\n    -1 0 3\n    0 0 3\n    1 0 2\n    1 1 40", "output": "2.4\n    \n\nIf we put the heat source at \\left(-0.2, 0\\right), the 1-st, 2-nd, and 3-rd\npieces of meat will be ready to eat within 2.4 seconds. This is the optimal\nplace to put the heat source.\n\n* * *"}, {"input": "10 5\n    -879 981 26\n    890 -406 81\n    512 859 97\n    362 -955 25\n    128 553 17\n    -885 763 2\n    449 310 57\n    -656 -204 11\n    -270 76 40\n    184 170 16", "output": "7411.2252"}]