#1332. DIFFUSE - Truyền tin

Bộ nhớ: 256 MiB Thời gian: 500 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Nguồn: Bài tập thầy Nguyễn Thanh Bình Ôn ĐT Hải Phòng T10/2020

Có một con đường thẳng nối hai làng. Trên con đường này có n người truyền tin đứng tại n vị trí. Khi truyền tin họ có thể chạy lại gần nhau đồng thời hét to tin mà họ muốn truyền cho người kia.

Người truyền tin đầu tiên (luôn ở làng 1 ) có một máy thu radio và anh ta dùng để theo dõi tin tức trên cả nước. Khi nhận được một tin thú vị và quan trọng, anh ta bắt đầu chạy và hét to tin tức mình nhận được cho những người tiếp sau, những người này lại làm thế cho đến khi tất cả những người truyền tin đều biết thông tin. Có một vài quy tắc cần chú ý như sau:

  • Tất cả những người truyền tin đều có thể chạy về hai phía với vận tốc 1 đơn vị/giây. Họ cũng có thể quyết định không chạy;
  • Mọi người đều nhận được toàn bộ thông tin cần tuyền tại 1 thời điểm. Ngoài ra một người có thể nghe thấy một người khác nếu như khoảng cách giữa họ không vượt quá K đơn vị dộ dài.

Yêu cầu: Cho biết vị trí của tất cả những người truyền tin. Hãy xác định thời gian nhỏ nhất để tất cả mọi người đều nhận được tin từ người 1 .

Dữ liệu vào:

  • Dòng đầu tiên ghi số thực K\ (0≤K≤10^6) là khoảng cách lớn nhất có thể nghe thấy nhau;
  • Dòng thứ hai ghi số nguyên n là số người truyền tin (1≤n≤10^5) ;
  • n dòng tiếp theo, mỗi dòng ghi một số thực D\ (0≤D≤10^9) là khoảng cách của người truyền tin đến vị trí của làng thứ nhất. Các giá trị này được liệt kê tăng dần. Có thể có nhiều người ở cùng một vị trí.

Dữ liệu ra:

  • Một số thực duy nhất là thời gian nhỏ nhất để n người nhận được thông tin. Kết quả làm tròn đến hàng phần nghìn.

Ví dụ:

Dữ liệu vào:
2.000
4
0.000
4.000
4.000
8.000
Dữ liệu ra:
1.000