Double Queue

View as PDF

Submit solution


Points: 0.28 (partial)
Time limit: 1.0s
Memory limit: 256M
Input: stdin
Output: stdout

Problem source:
Southeastern European 2007
Problem type
Allowed languages
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Ngân hàng BIG-Bank mở một chi nhánh ở Bucharest và được trang bị một máy tính hiện đại với các công nghệ mới nhập, C2#, VC3 ~+~ ...chỉ chuối mỗi cái là không ai biết lập trình.

Họ cần một phần mềm mô tả hoạt động của ngân hàng như sau: mỗi khách hàng có một mã số là số nguyên ~K~, và khi đến ngân hàng giao dịch, họ sẽ nhận được ~1~ số ~P~ là thứ tự ưu tiên của họ. Các thao tác chính như sau

  • ~0~ Kết thúc phục vụ
  • ~1~ ~K~ ~P~ Thêm khách hàng ~K~ vào hàng đợi với độ ưu tiên ~P~
  • ~2~ Phục vụ người có độ ưu tiên cao nhất và xóa khỏi danh sách hàng đợi
  • ~3~ Phục vụ người có độ ưu tiên thấp nhất và xóa khỏi danh sách hàng đợi.
  • Tất nhiên là họ cần bạn giúp rồi.

Input

Mỗi dòng của input là ~1~ yêu cầu, và chỉ yêu cầu cuối cùng mới có giá trị là ~0~. Giả thiết là khi có yêu cầu ~1~ thì không có khách hàng nào khác có độ ưu tiên là ~P~.

Output

Với mỗi yêu cầu ~2~ hoặc ~3~, in ra trên ~1~ dòng mã số của khách hàng được phục vụ tương ứng. Nếu có yêu cầu mà hàng đợi rỗng, in ra số ~0~.

Giới hạn

~K \le 10^{6}~, và ~P \le 10^{7}~.

Một khách hàng có thể yêu cầu phục vụ nhiều lần và với các độ ưu tiên khác nhau.

Sample Input

2
1 20 14
1 30 3
2
1 10 99
3
2
2
0

Sample Output

0
20
30
10
0

Comments

Please read the guidelines before commenting.


There are no comments at the moment.