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
  • 0k2,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;
} 

  

posted @ 2019-04-22 16:10  青衫客36  阅读(123)  评论(0编辑  收藏  举报