Ghép Vật Phẩm
Đề bài
Mô tả
Trong một trò chơi nhập vai, các vật phẩm được chia thành hai loại: cơ bản và tổng hợp. Chỉ có vật phẩm cơ bản được bán ngoài cửa hàng. Mỗi vật phẩm tổng hợp được ghép từ một số vật phẩm cơ bản theo một công thức cho trước. Khi ghép xong một vật phẩm tổng hợp, tất cả các vật phẩm cơ bản dùng làm nguyên liệu sẽ biến mất.
Có người chơi, ban đầu túi đồ của mọi người đều rỗng. Bạn được cho danh sách lần mua theo thứ tự thời gian: mỗi lần một người chơi mua đúng một vật phẩm cơ bản và cất vào túi.
Sau mỗi lần mua, nếu người chơi đó gom đủ nguyên liệu để ghép một vật phẩm tổng hợp thì người đó bắt buộc phải ghép ngay. Dữ liệu đảm bảo sau mỗi lần mua có nhiều nhất một cơ hội ghép xuất hiện. Ghép một vật phẩm tổng hợp sẽ trừ đi số lượng nguyên liệu tương ứng và cộng thêm một vật phẩm tổng hợp đó vào túi (nguyên liệu của các công thức chỉ gồm vật phẩm cơ bản, nên việc ghép không bao giờ tạo ra thêm cơ hội ghép mới).
Với mỗi người chơi, hãy cho biết cuối cùng họ đang sở hữu những vật phẩm nào và số lượng bao nhiêu.
Dữ liệu vào
- Dòng đầu chứa số nguyên , , , : số người chơi, số vật phẩm cơ bản, số vật phẩm tổng hợp, số lần mua.
- dòng tiếp theo, mỗi dòng là tên một vật phẩm cơ bản.
dòng tiếp theo mô tả các vật phẩm tổng hợp theo định dạng:
<Tên>: <NL 1> <SL 1>, <NL 2> <SL 2>, ... <NL X> <SL X>
nghĩa là để ghép vật phẩm này cần <SL i> đơn vị của nguyên liệu <NL i>. Các từ cách nhau đúng một dấu cách. Mọi nguyên liệu trong công thức đều khác nhau và đều đã xuất hiện trước đó với vai trò vật phẩm cơ bản.
- dòng cuối, mỗi dòng gồm số hiệu người chơi và tên vật phẩm cơ bản mà người đó mua.
Tên các vật phẩm đều khác nhau, gồm các chữ cái Latin thường, độ dài từ đến .
Dữ liệu ra
Gồm khối, khối thứ ứng với người chơi :
- Dòng đầu là số : số loại vật phẩm khác nhau mà người chơi đang sở hữu (số lượng dương).
- dòng tiếp theo, mỗi dòng gồm tên vật phẩm và số lượng, sắp xếp theo thứ tự từ điển của tên vật phẩm.
Ràng buộc
- Mọi số lượng trong công thức là số nguyên dương không vượt quá , số nguyên liệu thỏa .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 2 3 2 5 desolator refresher perseverance vanguard: desolator 1, refresher 1 maelstorm: perseverance 2 1 desolator 2 perseverance 1 refresher 2 desolator 2 perseverance |
1 vanguard 1 2 desolator 1 maelstorm 1 |
Người 1 mua desolator rồi refresher, gom đủ để ghép vanguard (cả hai nguyên liệu biến mất) nên chỉ còn vanguard 1. Người 2 mua perseverance hai lần thì ghép được maelstorm, còn mua thêm desolator một lần, nên có desolator 1 và maelstorm 1. |
| 2 3 2 5 a b c d: a 1, b 21 e: c 2 1 a 2 c 1 b 2 c 2 c |
2 a 1 b 1 2 c 1 e 1 |
Người 1 chỉ có a 1 và b 1 vì công thức d cần tới 21 đơn vị b. Người 2 mua c ba lần: sau lần thứ hai ghép được e (mất 2 c), còn lại c 1 và e 1. |
Bình luận