Ngăn xếp của Nikita
Đề bài
Mô tả
Nikita có một ngăn xếp (stack) hỗ trợ hai thao tác: đặt số nguyên lên đỉnh ngăn xếp, và xoá số ở đỉnh ngăn xếp (số được thêm vào sau cùng). Nếu ngăn xếp rỗng thì không làm gì cả.
Nikita đã thực hiện thao tác với ngăn xếp nhưng quên mất chúng. Bây giờ cậu nhớ lại từng thao tác một: ở bước thứ , cậu nhớ ra thao tác mà cậu đã thực hiện ở vị trí thứ trong dãy thao tác gốc. Nói cách khác, cậu nhớ lại các thao tác theo thứ tự của một hoán vị .
Sau mỗi bước, Nikita muốn biết: nếu thực hiện tất cả các thao tác đã nhớ được cho đến lúc đó, theo đúng thứ tự vị trí gốc của chúng, thì số nào đang nằm trên đỉnh ngăn xếp?
Dữ liệu vào
- Dòng đầu chứa số nguyên — số thao tác.
- dòng tiếp theo, dòng thứ bắt đầu bằng hai số nguyên và — vị trí gốc của thao tác được nhớ ra ở bước , và loại thao tác. Nếu thì thao tác là . Nếu thì thao tác là và dòng chứa thêm số nguyên .
Đảm bảo mỗi số nguyên từ đến xuất hiện đúng một lần trong dãy .
Dữ liệu ra
In ra dòng. Dòng thứ là số trên đỉnh ngăn xếp sau khi thực hiện (theo thứ tự vị trí gốc) tất cả các thao tác đã nhớ được ở các bước từ đến . Nếu ngăn xếp rỗng, in .
Ràng buộc
- ,
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 1 1 2 2 1 3 3 0 |
2 3 2 |
Các thao tác được nhớ đúng theo thứ tự thực hiện: sau đỉnh là ; sau đỉnh là ; sau cả ba thao tác đỉnh là . |
| 2 2 1 2 1 0 |
2 2 |
Bước 1 nhớ ra thao tác ở vị trí là , đỉnh là . Bước 2 nhớ ra thao tác ở vị trí là : thứ tự gốc là (trên ngăn xếp rỗng, không làm gì) rồi , nên đỉnh vẫn là . |
| 5 5 0 4 0 3 1 1 2 1 1 1 1 2 |
-1 -1 -1 -1 2 |
Nikita nhớ các thao tác theo thứ tự ngược. Bốn bước đầu, mọi đã nhớ đều bị các phía sau xoá hết nên ngăn xếp rỗng. Sau bước 5, dãy gốc là nên đỉnh là . |
Bình luận