Loading Now

findKthLargestValueInMatrix

Cho một bảng với n hàng và m cột. Giá trị thứ i ở hàng và thứ j ở cột bằng i*j (Các hàng và cột trong bảng được đánh số bắt đầu từ số 1). Nhiệm vụ của bạn là tìm ra giá trị thứ k lớn nhất trong bảng.

Nếu bạn viết ra n·m số trong bảng theo thứ tự không giảm thì số thứ k bạn viết ra được gọi là số thứ k lớn nhất.

Ví dụ:

  • Với n = 3,m = 2,k = 4, đầu ra là: findKthLargestValueInMatrix(n,m,k) = 3.
    Vì: 
    1x1 = 1
    1x2 = 2
    2x1 = 2
    2x2 = 4
    3x1 = 3
    3x2 = 6
    Khi sắp xếp các giá trị này theo thứ tự không giảm, ta có:
    1 2 2 3 4 6
    Bạn có thể thấy số thứ 4 là 3.
  • Với n = 3, m = 3, k = 9, đầu ra là: findKthLargestValueInMatrix(n,m,k) = 9.
    Vì: 
    1x1 = 1
    1x2 = 2
    1x3 = 3
    2x1 = 2
    2x2 = 4
    2x3 = 6
    3x1 = 3
    3x2 = 6
    3x3 = 9
    Khi sắp xếp các giá trị này theo thứ tự không giảm, ta có:
    1 2 2 3 3 4 6 6 9
    Bạn có thể thấy số thứ 99.

Đầu vào/Đầu ra

  • [giới gạn thời gian] 0.5s với C++, 3s với Java and C#, 4s với Python and JavaScript
  • [đầu vào] integer n
    Số hàng:
    1 ≤ n ≤ 5*104
  • [đầu vào] integer m
    Số cột:
    1 ≤ m ≤ 5*104
  • [đầu vào] int64 k
    1 ≤ k ≤ n * m
  • [đầu ra] int64 
    Giá trị thứ k lớn nhất trong bảng.

Post Comment

Contact