Priority Queue
A priority queue is a data structure which maintains a set SS of elements, each of with an associated value (key), and supports the following operations:
- insert(S,k)insert(S,k): insert an element kk into the set SS
- extractMax(S)extractMax(S): remove and return the element of SS with the largest key
Write a program which performs the insert(S,k)insert(S,k) and extractMax(S)extractMax(S) operations to a priority queue SS. The priority queue manages a set of integers, which are also keys for the priority.
Input
Multiple operations to the priority queue SS are given. Each operation is given by "insert kk", "extract" or "end" in a line. Here, kk represents an integer element to be inserted to the priority queue.
The input ends with "end" operation.
Output
For each "extract" operation, print the element extracted from the priority queue SS in a line.
Constraints
- The number of operations ≤2,000,000≤2,000,000
- 0≤k≤2,000,000,0000≤k≤2,000,000,000
Sample Input 1
insert 8 insert 2 extract insert 10 extract insert 11 extract extract end
Sample Output 1
8 10 11 2
#include <iostream> #include <queue> #include <string> using namespace std; int main() { priority_queue<int> PQ; string com; int n; while(cin >> com) { if(com == "end") { break; } if(com[0] == 'i') { cin >> n; PQ.push(n); } else if(com[0] == 'e') { cout << PQ.top() << endl; PQ.pop(); } } return 0; }