优先队列【东北大学oj数据结构9-3】C++
优先队列
优先级队列是一种数据结构,其中保存了一组数据 S,其中每个元素都有一个键,并执行以下操作:
insert(S, k):将元素k插入集合S
extractMax(S):从S中取出S中key最大的元素并返回其值
创建一个程序,为优先级队列 S 插入 (S, k) 和提取 Max (S)。这里,队列的元素是一个整数,它本身被视为一个键。
输入
多条指令被赋予优先级队列 S。每条指令都以插入 k、提取或结束的形式在一行中给出。其中 k 表示要插入的整数。
end 指令标志着输入的结束。
输出
对于每个提取命令,在一行输出从优先级队列 S 中提取的值。
约束
指令数不超过2,000,000。
0 ≤ k ≤ 2,000,000,000
输入样例
insert 8
insert 2
extract
insert 10
extract
insert 11
extract
extract
end
输出样例
8
10
11
2
#include <iostream>
#include <vector>
#include <string>
#include <queue>
using namespace std;
int main() {
priority_queue<int> a;
string c;
int v;
while(cin>>c)
{
if(c=="insert")
{
cin>>v;
a.push(v);
}
else if(c=="extract")
{
if(!a.empty())
{
cout<<a.top()<<endl;
a.pop();
}
}
else if(c=="end")
{
break;
}
}
return 0;
}