[DHBB25 - DX01 - 11] Bài 3: Trạm cứu hỏa

Xem dạng PDF

Gửi bài giải

Điểm: 45,00 (OI)
Giới hạn thời gian: 2.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

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

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Một thị trấn được mô tả bởi ~N~ ngọn đồi xếp thành một hàng. Ngọn đồi thứ ~i~ có độ cao ~h_i~. Khoảng thời gian để đi từ ngọn đồi ~i~ đến ngọn đồi ~i+1~ là ~t_i~ phút. Một ngọn đồi ~i~ có thể nhìn thấy một ngọn đồi ~j~ nếu không có ngọn đồi ~k~ nằm giữa sao cho ~h_k \ge h_i~.

Chính quyền dự định đặt ~K~ trạm cứu hỏa tại một số ngọn đồi. Mỗi trạm cứu hỏa có thể bảo vệ tất cả các ngọn đồi mà nó có thể nhìn thấy. Thời gian để lính cứu hỏa đến một ngọn đồi nhất định là tổng thời gian di chuyển từ trạm cứu hỏa gần nhất đến ngọn đồi đó. Nếu một trạm cứu hỏa được đặt tại ngọn đồi ~i~, thì thời gian di chuyển đến nó là ~s_i = 0~.

Hãy tìm cách đặt ~K~ trạm cứu hỏa sao cho thời gian di chuyển cứu hỏa lớn nhất ~max(s_1, s_2, ..., s_N)~ là nhỏ nhất. Nếu không thể đặt trạm theo cách hợp lệ, hãy in ra ~-1~.

Input

  • Dòng 1: Chứa hai số nguyên ~N~ và ~K~ (~1 \le K \le N \le 500000~) — số lượng ngọn đồi và số trạm cứu hỏa.
  • Dòng 2: Chứa ~N~ số nguyên ~h_1, h_2, ..., h_N~ (~1 \le h_i \le 10^9~) — độ cao của các ngọn đồi.
  • Dòng 3: Chứa ~N-1~ số nguyên ~t_1, t_2, ..., t_{N-1}~ (~1 \le t_i \le 10^9~) — thời gian di chuyển giữa các ngọn đồi liên tiếp.

Output

  • Nếu không thể đặt trạm hợp lệ, in ra ~-1~. Nếu có thể, in ra số nguyên ~S~ — thời gian phản hồi lớn nhất tối thiểu.

Sample Input 1

8 3
4 4 3 4 3 2 5 4
3 5 4 7 5 9 5

Sample Output 1

7

Giải thích ví dụ 1

Các trạm được đặt tại các ngọn đồi ~2, 5, 7~.

  • Ngọn đồi ~2~ bảo vệ ~1, 2, 3~.
  • Ngọn đồi ~5~ bảo vệ ~4, 5, 6~.
  • Ngọn đồi ~7~ bảo vệ ~7, 8~. Thời gian phản hồi lớn nhất là ~7~ (từ đồi ~5~ đến đồi ~4~).

Sample Input 2

8 1
2 4 2 4 1 2 4 1
1 1 1 1 1 1 1

Sample Output 2

-1

Subtasks

Subtask Ràng buộc bổ sung % Điểm
1 ~n, k \le 15; t_1 = t_2 = ... = t_n = 1~ 10
2 ~n \le 500 000, k = 1~ 10
3 ~n, k \le 200; t_1 = t_2 = ... = t_n = 1~ 25
4 ~n, k \le 1500~ 10
5 ~n \le 100 000, k \le 3; t_1 = t_2 = ... = t_n = 1~ 15
6 ~n \le 100 000;~ Mỗi ngọn đồi có thể nhìn thấy ~100~ ngọn đồi khác 15
7 ~n, k \le 100 000~ 10
8 Không có ràng buộc bổ sung 10

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.