Kaninho xây tháp

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: 1600 Thời gian: 2.0s Bộ nhớ: 1023M Input: bàn phím Output: màn hình

Có \(N\) viên gạch được đánh số \(1,2,3,...,N\). Với mỗi \(i\) \((1\le i\le N)\), viên gạch thứ \(i\) có khối lượng là \(w_i\), độ cứng \(s_i\) và giá trị là \(v_i\).

Kaninho quyết định xây một tòa tháp bằng một số viên gạch được chọn từ \(N\) viên gạch trên và xếp chúng theo chiều thẳng đứng. Biết rằng tòa tháp này phải thỏa mãn điều kiện sau:

  • Với mỗi viên gạch \(j\) được chọn, thì tổng khối lượng của tất cả những viên gạch được xếp trên nó phải không được lớn hơn \(s_j\).

Tìm tổng giá trị lớn nhất của các viên gạch được chọn để xây tòa tháp.

Input

  • Dòng thứ nhất chứa số nguyên \(N\) \((1\le N\le 10^3)\).
  • \(N\) dòng tiếp theo chứa ba số nguyên \(w_i, s_i, v_i\) \((1\le w_i, s_i\le 10^4, 1\le v_i\le 10^9)\).

Output

  • In ra giá trị cần tìm.

Example

Test 1

Input
3
2 2 20
2 1 30
3 1 40
Output
50
Note

Ở ví dụ này, ta có thể tạo ra tổng giá trị lớn nhất với viên gạch thứ \(1\) và viên gạch thứ \(2\) bằng cách chồng viên thứ \(2\) lên viên thứ \(1\).

Nguồn: Tham khảo từ Atcoder

Bình luận

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

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