[VTT Q4 Contest 04] Bài 4: Xây dựng trạm phát sóng [STATION]

Xem dạng PDF

Gửi bài giải


Điểm: 4,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: STATION.INP
Output: STATION.OUT

Dạng bài
Ngôn ngữ cho phép
C++, Pascal, PyPy, Python

Thành phố Wonder Land có ~n~ khu dân cư nằm cách đều nhau một đơn vị dọc theo một con đường thẳng. Ta coi đường là trục số, các khu dân cư là các điểm có tọa độ nguyên liên tiếp từ 0 đến ~n - 1~.

Chính quyền muốn xây các trạm phát sóng sao cho mọi khu dân cư đều thu được sóng. Một trạm phát sóng có bán kính ~R~: mọi khu dân cư có khoảng cách đến trạm không vượt quá ~R~ đều nhận được sóng của trạm đó. Sau khảo sát, có ~m~ vị trí trên trục có thể đặt trạm, vị trí thứ ~i~ có tọa độ ~x_i~. Cần chọn một số vị trí trong danh sách này để xây trạm sao cho số trạm là ít nhất mà mọi khu dân cư vẫn nhận được sóng của ít nhất một trạm.

Ví dụ: với ~n = 12~, ~R = 2~ và 8 vị trí có tọa độ lần lượt 3, 1, 0, 5, 9, 6, 10, 11, chỉ cần 3 trạm tại các tọa độ 1, 6, 11 (tức các vị trí thứ 2, 6 và 8 trong danh sách) là phủ sóng được toàn bộ khu dân cư.

Hãy tìm phương án chọn ít vị trí nhất để toàn bộ ~n~ khu dân cư đều có sóng.

Dữ liệu

  • Dòng đầu chứa ba số nguyên dương ~n, m, R~ (~1 \le n \le 10^9, 1 \le m \le 10^6, 0 \le R \le 10^9~) lần lượt là số khu dân cư, số vị trí có thể xây trạm và bán kính phát sóng.
  • Dòng thứ hai chứa ~m~ số nguyên ~x_1, x_2, \dots, x_m~ (~0 \le x_i \le 10^9~) là các tọa độ có thể xây trạm.

Kết quả

  • Dòng đầu ghi một số nguyên dương ~k~ là số trạm cần xây.
  • Dòng thứ hai ghi ~k~ số nguyên là chỉ số (thứ tự trong danh sách đầu vào) của các vị trí được chọn để xây trạm.

Ví dụ

STATION.INP

12 8 2
3 1 0 5 9 6 10 11

STATION.OUT

3
2 6 8

Giới hạn

  • Subtask 1 (30% số điểm): ~n, m \le 10^3~.
  • Subtask 2 (30% số điểm): ~n, m \le 10^5~.
  • Subtask 3 (40% số điểm): không có ràng buộc thêm.

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.