Dãy con chọn lọc tối ưu

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1800 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho dãy gồm \(N\) điểm trên một trục số. Điểm thứ \(i\) nằm ở tọa độ \(X_i\) và có trọng số \(W_i\). Các điểm được sắp xếp theo thứ tự tăng dần của tọa độ (\(X_1 < X_2 < \dots < X_N\)).

Nhiệm vụ của bạn là chọn ra một dãy con các điểm ở các chỉ số \(i_1 < i_2 < \dots < i_m\) (\(m \ge 1\)) sao cho thỏa mãn đồng thời hai điều kiện sau:

  1. Khoảng cách tọa độ giữa hai điểm liên tiếp được chọn ít nhất là \(D\):
\[X_{i_{s+1}} - X_{i_s} \ge D \quad \forall 1 \le s < m\]
  1. Chênh lệch trị tuyệt đối trọng số giữa hai điểm liên tiếp được chọn tối đa là \(K\):
\[|W_{i_{s+1}} - W_{i_s}| \le K \quad \forall 1 \le s < m\]

Hãy tìm tổng trọng số lớn nhất có thể đạt được: \(\sum_{s=1}^m W_{i_s}\). Chú ý rằng các trọng số có thể âm, và bạn luôn phải chọn ít nhất một điểm (\(m \ge 1\)).

Input

  • Dòng đầu tiên chứa ba số nguyên \(N, D, K\) (\(1 \le N \le 10^5\), \(0 \le D, K \le 10^9\)).
  • \(N\) dòng tiếp theo, dòng thứ \(i\) chứa hai số nguyên \(X_i, W_i\) (\(1 \le X_i \le 10^9\), \(-10^9 \le W_i \le 10^9\)). Dữ liệu đảm bảo \(X_1 < X_2 < \dots < X_N\).

Output

  • In ra một số nguyên duy nhất là tổng trọng số lớn nhất đạt được của dãy con hợp lệ.

Chấm điểm

  • Subtask duy nhất (100 điểm): Không có ràng buộc gì thêm.

Ví dụ

Test 1

Input
4 3 5
1 10
3 -5
5 12
8 7
Output
29
Note

Chọn các điểm ở vị trí thứ \(1, 3, 4\):

  • Tọa độ: \(1, 5, 8\) (hiệu khoảng cách: \(5-1=4 \ge 3\), \(8-5=3 \ge 3\) - Thỏa mãn).
  • Trọng số: \(10, 12, 7\) (chênh lệch: \(|12-10|=2 \le 5\), \(|7-12|=5 \le 5\) - Thỏa mãn).
  • Tổng trọng số: \(10 + 12 + 7 = 29\).

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.