Mô Phỏng Hàng Đợi Bằng Hai Stack

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài

Hãy cài đặt một hàng đợi (FIFO) chỉ sử dụng hai stack và xử lý các truy vấn sau:

  • PUSH x — Thêm phần tử ~x~ vào cuối hàng.
  • POP — Lấy và in phần tử đầu hàng. Nếu hàng rỗng in ra -1.
  • PEEK — In phần tử đầu hàng mà không xoá. Nếu hàng rỗng in ra -1.
  • SIZE — In ra số phần tử hiện có trong hàng.
Dữ liệu vào
  • Dòng đầu tiên chứa số nguyên ~Q~ ~(1 \le Q \le 2 \times 10^5)~ — số truy vấn.
  • ~Q~ dòng tiếp theo, mỗi dòng là một truy vấn theo định dạng trên.

~1 \le x \le 10^9~.

Dữ liệu ra

Với mỗi truy vấn POP, PEEK, SIZE, in ra kết quả trên một dòng.

Ví dụ

Input:

8
PUSH 1
PUSH 2
PUSH 3
PEEK
POP
SIZE
POP
POP

Output:

1
1
2
2
3
Giới hạn

~1 \le Q \le 2 \times 10^5~

Gợi ý: Dùng stack<int> inbox, outbox. Khi outbox rỗng và cần POP/PEEK, đổ toàn bộ inbox sang outbox.

Phân tích độ phức tạp: mỗi phần tử chỉ bị chuyển đúng một lần → tổng ~O(N)~.



Bình luận

Hãy đọc nội quy trước khi bình luận.


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