Gửi bài giải
Điểm:
12,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Nguồn bài:
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch
Cho một dãy số nguyên dương ~𝐴~ = (~𝑎_1, 𝑎_2, … , 𝑎_𝑛~) (~𝑎_𝑖 ≤ 10^6; 1 ≤ 𝑖 ≤ 𝑛~). Với mỗi phần tử ~𝑎_𝑖~ bạn được phép tăng hoặc giảm một lượng tùy ý để được một số nguyên tố. Khi đó chi phí của bạn cần bỏ ra chính là lượng tăng hoặc giảm đó.
Yêu cầu: Hãy chọn ra một đoạn con gồm ~𝑘~ phần tử liên tiếp nhau của dãy ~𝐴~ sao cho tổng chi phí biến đổi mọi phần tử trong đoạn con đó thành các số nguyên tố là nhỏ nhất.
Dữ liệu vào:
- Dòng 1: Chứa hai số nguyên dương ~𝑛~, ~𝑘~ (~1 ≤ 𝑘 ≤ 𝑛 ≤ 10^5~);
- Dòng 2: Chứa ~𝑛~ số nguyên dương ~𝑎_1, 𝑎_2, . . , 𝑎_𝑛~ (~𝑎_𝑖 ≤ 10^6~ ~∀𝑖 = 1,2, … , 𝑛~).
Dữ liệu ra:
- Gồm một số nguyên duy nhất là tổng chi phí biến đổi nhỏ nhất tìm được.
Ví dụ:
Input
4 2
9 5 8 15
Output
1
Giải thích:
- Chọn đoạn [5,8], biến đổi 8 → 7 với chi phí là 1.
Ràng buộc:
- Subtask1: Có 20% số test có ~𝑎_𝑖~ đều là số nguyên tố ~∀ 𝑖~ = 1,2, … , ~𝑛~.
- Subtask2: 40% số test ~𝑛~, ~𝑘~ ≤ 5000; ~𝑎_i ≤ 5000~ ~∀ 𝑖~ = 1,2, … , ~𝑛~.
- Subtask3: 40% số test còn lại không có ràng buộc gì thêm.
Bình luận