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