Gửi bài giải
Điểm:
10,00 (OI)
Giới hạn thời gian:
2.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch
Có ~n~ người muốn thuê một phòng trong một khách sạn. Mỗi người ~i~ có một khoảng thời gian thuê ~[d_i, c_i]~ (~d_i~ là thời điểm đến, ~c_i~ là thời điểm rời đi). Ngoài ra, mỗi người còn có ~p_i~ - số tiền mà họ sẵn sàng trả để thuê phòng trong khoảng thời gian này.
Một người chỉ có thể ở trong phòng trong khoảng thời gian đã đăng ký, và khi một người rời đi, phòng sẽ được trả lại ngay lập tức.
Bạn cần tìm tập hợp nhiều nhất số lượng người thuê phòng mà không có hai người nào trùng khoảng thời gian sử dụng phòng và tổng số tiền thuê phòng là lớn nhất có thể.
Yêu cầu:
Tìm tổng số tiền thuê phòng lớn nhất có thể thu được.
Dữ liệu vào (Input):
- Dòng đầu tiên chứa số nguyên ~n~ ~(1 ≤ n ≤ 100000)~ - số người muốn thuê phòng.
- ~n~ dòng tiếp theo, mỗi dòng chứa ba số nguyên ~d_i, c_i, p_i~ ~(1 ≤ d_i < c_i ≤ 10^9, 1 ≤ p_i ≤ 10^6)~ - thời điểm đến, thời điểm rời đi và số tiền thuê phòng của người thứ ~i~.
Dữ liệu ra (Output):
- Dòng đầu tiên in ra tổng số tiền thuê phòng lớn nhất có thể.
Ví dụ 1
Input:
5
1 4 50
3 5 20
0 6 30
5 7 40
8 9 60
Output:
150
Giải thích:
- Nhóm thuê phòng tối ưu: (1,4,50), (5,7,40), (8,9,60).
- Tổng tiền thuê phòng: 50 + 40 + 60 = 150.
Bình luận