output_description: Print the answer.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N K
      A_1 A_2 \dots A_N
attempt: # D - Pairs
  
  import numpy as np
  
  N, K = map(int, input().split())
  A = np.array(sorted(list(map(int, input().split()))), np.int64)
  
  n_zero = len(A[A == 0])
  A_posi = A[A > 0]
  A_nega = A[A < 0]
  
  
  def n_pairs_less_than_or_equal_to_border(product_border):
      n_pairs = -np.sum(
          A * A <= product_border
      )  # i==jかつ条件を満たすペアの個数を先に引き、以降重複を許して数える
      n_pairs += n_zero * N * (product_border >= 0)
  
      n_pairs += np.searchsorted(A, product_border // A_posi, side="right").sum()
      n_pairs += (N - np.searchsorted(A, -(-product_border // A_nega), side="left")).sum()
  
      # 上記2行は下記と同様の処理だが下記の実装だとTLE
      # for i in range(N):
      #     if A[i] > 0:
      #         n_pairs += np.searchsorted(A, product_border//A[i], side="right")
      #     elif A[i] < 0:
      #         n_pairs += N - np.searchsorted(A, -(-product_border//A[i]), side="left")
  
      n_pairs //= 2
      return n_pairs
  
  
  lower = -(10**18)
  upper = 10**18
  
  while lower <= upper:
      x = (lower + upper) // 2
      if n_pairs_less_than_or_equal_to_border(x) >= K:
          ans = x
          upper = x - 1
      else:
          lower = x + 1
  
  print(ans)
  
problem_description: Statement
  
  We have N integers A_1, A_2, ..., A_N.
  
  There are \frac{N(N-1)}{2} ways to choose two of them and form a pair. If we
  compute the product of each of those pairs and sort the results in ascending
  order, what will be the K-th number in that list?
samples: [{"input": "4 3\n    3 3 -4 -2", "output": "-6\n    \n\nThere are six ways to form a pair. The products of those pairs are 9, -12, -6,\n-12, -6, 8.\n\nSorting those numbers in ascending order, we have -12, -12, -6, -6, 8, 9. The\nthird number in this list is -6.\n\n* * *"}, {"input": "10 40\n    5 4 3 2 -1 0 0 0 0 0", "output": "6\n    \n\n* * *"}, {"input": "30 413\n    -170202098 -268409015 537203564 983211703 21608710 -443999067 -937727165 -97596546 -372334013 398994917 -972141167 798607104 -949068442 -959948616 37909651 0 886627544 -20098238 0 -948955241 0 -214720580 277222296 -18897162 834475626 0 -425610555 110117526 663621752 0", "output": "448283280358331064"}]