trang chủ / bài tập / nikstack

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: push(x) đặt số nguyên x lên đỉnh ngăn xếp, và pop() 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ì pop() không làm gì cả.

Nikita đã thực hiện m 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ứ i, cậu nhớ ra thao tác mà cậu đã thực hiện ở vị trí thứ pi 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ị p1,p2,,pm.

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 m — số thao tác.
  • m dòng tiếp theo, dòng thứ i bắt đầu bằng hai số nguyên piti — vị trí gốc của thao tác được nhớ ra ở bước i, và loại thao tác. Nếu ti=0 thì thao tác là pop(). Nếu ti=1 thì thao tác là push(xi) và dòng chứa thêm số nguyên xi.

Đảm bảo mỗi số nguyên từ 1 đến m xuất hiện đúng một lần trong dãy p1,,pm.

Dữ liệu ra

In ra m dòng. Dòng thứ i 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ừ 1 đến i. Nếu ngăn xếp rỗng, in 1.

Ràng buộc

  • 1m105
  • 1pim, ti{0,1}
  • 1xi106

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 push(2) đỉnh là 2; sau push(2),push(3) đỉnh là 3; sau cả ba thao tác push(2),push(3),pop() đỉnh là 2.
2
2 1 2
1 0
2
2
Bước 1 nhớ ra thao tác ở vị trí 2push(2), đỉnh là 2. Bước 2 nhớ ra thao tác ở vị trí 1pop(): thứ tự gốc là pop() (trên ngăn xếp rỗng, không làm gì) rồi push(2), nên đỉnh vẫn là 2.
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 push đã nhớ đều bị các pop phía sau xoá hết nên ngăn xếp rỗng. Sau bước 5, dãy gốc là push(2),push(1),push(1),pop(),pop() nên đỉnh là 2.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0