codevs 3110 二叉堆练习3
传送门
3110 二叉堆练习3
时间限制: 3 s
空间限制: 128000 KB
题目等级 : 黄金 Gold
题目描述 Description
给定N(N≤500,000)和N个整数(较有序),将其排序后输出。
输入描述 Input Description
N和N个整数
输出描述 Output Description
N个整数(升序)
样例输入 Sample Input
5
12 11 10 8 9
样例输出 Sample Output
8 9 10 11 12
数据范围及提示 Data Size & Hint
对于33%的数据 N≤10000
对于另外33%的数据 N≤100,000 0≤每个数≤1000
对于100%的数据 N≤500,000 0≤每个数≤2*10^9
分类标签 Tags 点此展开
【思路】
堆排序
priority<long long,vector<long long>,greater<long long > >q;
就能从小到大输出了。注意最后> >中间有空格。否则被当成位运算符。
【code】
#include<iostream> #include<cstdio> #include<queue> using namespace std; int n; long long x; priority_queue<long long,vector<long long>,greater<long long> >q; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%lld",&x); q.push(x); } for(int i=1;i<=n;i++) { printf("%lld ",q.top()); q.pop(); } return 0; }