code: def k_closest(points, k, origin=(0, 0)):
      # Time: O(k+(n-k)logk)
      # Space: O(k)
      
      heap = [(-distance(p, origin), p) for p in points[:k]]
      heapify(heap)
  
      """
      For every point p in points[k:],
      check if p is smaller than the root of the max heap;
      if it is, add p to heap and remove root. Reheapify.
      """
      for p in points[k:]:
          d = distance(p, origin)
  
          heappushpop(heap, (-d, p))  # heappushpop does conditional check
          """Same as:
              if d < -heap[0][0]:
                  heappush(heap, (-d,p))
                  heappop(heap)
  
          Note: heappushpop is more efficient than separate push and pop calls.
          Each heappushpop call takes O(logk) time.
          """
  
      return [p for nd, p in heap]
docs: Initialize max heap with first k points.
      Python does not support a max heap; thus we can use the default min heap where the keys (distance) are negated.