Hệ thống đặt bàn
Đề bài
Mô tả
Một nhà hàng nhận được yêu cầu đặt bàn. Yêu cầu thứ gồm hai số và : nhóm khách của yêu cầu này có người và nếu được phục vụ thì họ sẽ trả tổng cộng đồng.
Cả nhóm khách của một yêu cầu phải ngồi chung một bàn, và mỗi bàn chỉ được dành cho đúng một nhóm. Nhà hàng có bàn, bàn thứ chứa được tối đa người. Như vậy nhóm của yêu cầu có thể ngồi ở bàn khi và chỉ khi . Nếu một yêu cầu không được xếp bàn thì nhóm đó bỏ đi và không trả đồng nào.
Hãy chọn tập các yêu cầu được chấp nhận cùng cách xếp bàn cho chúng sao cho tổng số tiền thu được là lớn nhất.
Dữ liệu vào
- Dòng đầu chứa số nguyên là số yêu cầu.
- dòng tiếp theo, dòng thứ chứa hai số nguyên và .
- Dòng tiếp theo chứa số nguyên là số bàn.
- Dòng cuối chứa số nguyên .
Dữ liệu ra
- Dòng đầu in ra hai số nguyên và : số yêu cầu được chấp nhận và tổng số tiền thu được.
- dòng tiếp theo, mỗi dòng chứa hai số nguyên: chỉ số của yêu cầu được chấp nhận và chỉ số của bàn xếp cho nhóm khách đó. Các yêu cầu và các bàn được đánh số từ theo thứ tự xuất hiện trong dữ liệu vào.
Mỗi yêu cầu và mỗi bàn chỉ được xuất hiện nhiều nhất một lần. Nếu có nhiều đáp án tối ưu, in ra đáp án bất kỳ.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 10 50 2 100 5 30 3 4 6 9 |
2 130 2 1 3 2 |
Nhóm có người, xếp vào bàn (chứa người). Nhóm có người, xếp vào bàn (chứa người). Nhóm có người, không bàn nào chứa nổi nên bị từ chối. Tổng tiền . |
| 3 10 10 3 5 5 8 3 3 4 10 |
2 15 1 3 2 1 |
Chỉ bàn (chứa người) đủ lớn cho nhóm hoặc nhóm , nên chỉ một trong hai nhóm được phục vụ. Chọn nhóm trả đồng, cộng nhóm ngồi bàn trả đồng, tổng là tối ưu. |
| 2 10 10 5 5 1 4 |
0 0 | Bàn duy nhất chỉ chứa người, không nhóm nào vừa, nên không chấp nhận yêu cầu nào. |
Bình luận