#1591. Pháo hoa (FIREWORK)

Bộ nhớ: 512 MiB Thời gian: 1000 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

Thành phố đang tổ chức lễ hội pháo hoa. Khu vực lễ hội có n địa điểm được đánh số từ 1 đến n trên một trục thẳng. Có m màn bắn pháo hoa được lên lịch trình. Màn bắn thứ i diễn ra tại thời điểm t_i , tại vị trí a_i , và mang lại độ vui vẻ cực đại là b_i .

Nếu tại thời điểm t_i , bạn đang đứng tại vị trí x , độ vui vẻ bạn nhận được từ màn bắn thứ i b_i - |a_i - x| . (Lưu ý: giá trị này có thể âm).

Bạn bắt đầu tại thời điểm 1 ở bất kỳ vị trí nào bạn muốn. Mỗi đơn vị thời gian, bạn có thể di chuyển tối đa d đơn vị khoảng cách (tức là từ x có thể đến bất kỳ đâu trong đoạn [x-d, x+d] ).

Hãy tìm lịch trình di chuyển sao cho tổng độ vui vẻ nhận được từ tất cả m màn pháo hoa là lớn nhất.

Dữ liệu:

  • Dòng đầu tiên chứa ba số nguyên n, m, d ( 1 \le n \le 150,000 , 1 \le m \le 300 , 1 \le d \le n ).
  • m dòng tiếp theo, mỗi dòng chứa ba số nguyên a_i, b_i, t_i ( 1 \le a_i \le n , 1 \le b_i \le 10^9 , 1 \le t_i \le 10^9 ).
  • Dữ liệu đảm bảo t_i \le t_{i+1} với mọi 1 \le i < m .

Kết quả:

  • In ra một số nguyên duy nhất là tổng độ vui vẻ lớn nhất có thể đạt được.

Ví dụ:

Dữ liệu:

50 3 1
49 1 1
26 1 4
6 1 10

Kết quả:

-31

Dữ liệu:

10 2 1
1 1000 4
9 1000 4

Kết quả:

1992

Giới hạn:

  • Subtask #1: n \le 1000, m \le 50 .
  • Subtask #2: Không có ràng buộc bổ sung.