控制堆内数据数目不超过m即可;
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <string>
#include<stack>
#include<queue>
#define ll long long
using namespace std;
priority_queue<int, vector<int>,less<int> > big;
priority_queue<int, vector<int>,greater<int> > small;
int main()
{
int n, m;int t;
cin >> n >> m;
for (int i = 1; i <= m; i++)
{
scanf("%d", &t);
big.push(t);
}
for (int i = 1; i <= n - m; i++)
{
scanf("%d", &t);
if (t < big.top())
{
big.pop();
big.push(t);
}
}
for (int i = 1; i <= m; i++)
{
small.push(big.top());
big.pop();
}
for (int i = 1; i <= m; i++)
{
printf("%d\n", small.top());
small.pop();
}
}