大家好,欢迎来到IT知识分享网。
/*
实现堆结构
查看 提交 统计 提问
总时间限制: 3000ms 内存限制: 65535kB
描述
定义一个数组,初始化为空。在数组上执行两种操作:
1、增添1个元素,把1个新的元素放入数组。
2、输出并删除数组中最小的数。
使用堆结构实现上述功能的高效算法。
输入
第一行输入一个整数t,代表测试数据的组数。
对于每组测试数据,第一行输入一个整数n,代表操作的次数。
每次操作首先输入一个整数type。
当type=1,增添操作,接着输入一个整数u,代表要插入的元素。
当type=2,输出删除操作,输出并删除数组中最小的元素。
1<=n<=100000。
输出
每次删除操作输出被删除的数字。
样例输入
2
5
1 1
1 2
1 3
2
2
4
1 5
1 1
1 7
2
样例输出
1
2
1
*/
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
struct cmp
{
bool operator()(int a, int b)
{
return a > b;
}
};
int main()
{
int t,n,type,num;
cin >> t;
for (int i = 0; i < t; ++i)
{
cin >> n;
priority_queue<int,vector<int>,cmp> pQueue;
for (int j = 0; j < n; ++j)
{
cin >> type;
if (type == 1)
{
cin >> num;
pQueue.push(num);
}
else
{
cout << pQueue.top() << endl;
pQueue.pop();
}
}
}
return 0;
}
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/12331.html