Bài 3. Đoạn con ngắn nhất (HSG 9 Hải Phòng 2023-2024)

Xem PDF




Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1400 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho dãy \(A\) có \(n\) số nguyên dương \(a_1, a_2, \ldots, a_n\) và số nguyên \(k\) (\(1 \le k \le n \le 10^6\)).

Yêu cầu: Tìm độ dài đoạn con ngắn nhất chứa đủ \(k\) phần tử mà số lượng ước của mỗi phần tử này là nhiều nhất trong dãy.

Input

  • Dòng một gồm hai số nguyên dương \(n, k\).
  • Dòng hai gồm \(n\) số nguyên dương \(a_1, a_2, \ldots, a_n\) (\(1 \le a_i \le 10^7, \forall i=\overline{1, n}\)).
  • Các số nguyên trong tệp dữ liệu được ghi cách nhau ít nhất một dấu cách trống.

Output

  • Ghi ra một số nguyên thỏa mãn yêu cầu, trường hợp không có đoạn con nào đủ \(k\) phần tử thỏa mãn yêu cầu thì ghi \(-1\).

Example

Test 1

Input
8 3
6 2 3 8 4 10 9 10
Output
5
Note
  • Các phần tử có cùng số lượng ước nhiều nhất là \(6, 8, 10\) và \(10\) (cùng có \(4\) ước).
  • Đoạn con ngắn nhất chứa đủ \(3\) phần tử có cùng số lượng ước nhiều nhất là đoạn \([4, 8]\) (từ vị trí thứ 4 đến vị trí thứ 😎 có độ dài là \(5\), gồm các phần tử thoả mãn là: \(8, 10\) và \(10\).

Scoring

  • Subtask \(1\) (\(50\%\) số điểm): \(n \le 10^3, k \le 10^3, a_i \le 10^6\).
  • Subtask \(2\) (\(30\%\) số điểm): \(n \le 10^5, k \le 10^4, a_i \le 10^6\).
  • Subtask \(3\) (\(10\%\) số điểm): \(n \le 10^6, k \le 10^6, a_i \le 10^6\).
  • Subtask \(4\) (\(10\%\) số điểm): Không có ràng buộc gì thêm.

Bình luận (1)

Mới nhất
Tải bình luận...