#838. MSE07B - Xếp hàng ưu tiên

Bộ nhớ: 256 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Ngan 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 cong 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 một 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 tien 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.

Dữ liệu vào:

  • Gồm nhiều dòng, mỗi dòng là một 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 ( 𝐾 ≤ 10^6; 𝑃 ≤ 10^7 , tổng số yêu cầu mỗi loại không quá 10^5 ). 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.

Dữ liệu ra:

  • Với mỗi yêu cầu 2 hoặc 3 , in ra trên một 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 .

Ví dụ:

Dữ liệu vào:
2
1 20 14
1 30 3
2
1 10 99
3
2
2
0
Dữ liệu ra:
0
20
30
10
0