堆
手写heap?
priority_queue搞定一切
堆的原理大家听懂就好
我接触过的oi界的神犇们都没有手写堆的
priority_queue
priority_queue<int> h;
默认从大到小排序
这个题要求从小到大排
那我们来一个骚操作
h.push(-a);
啊哈是不是很妙
当然正常人都是这么搞的
priority_queue <int,vector<int>,less<int> > p;//从大到小,越来越小
priority_queue <int,vector<int>,greater<int> > q;//从小到大,越来越大
//注意最后的两个>之间要加空格
我不是正常人因为我懒
SO HERE COMES MY CODE
#include<bits/stdc++.h>
using namespace std;
int n,m,a;
priority_queue<int> h;
int main(){
scanf("%d%d",&n,&m);
while(n--) scanf("%d",&a), h.push(-a);
while(m--) printf("%d ",-h.top()) , h.pop();
return 0;
}
压行使我快乐