[LOJ6130] Fable

Description

给定序列,求 (k) 轮冒泡排序后的结果。

Solution

每个数字最多往前挪 (k) 步,因此用优先队列维护即可。

#include <bits/stdc++.h>
using namespace std;
signed main()
{
    priority_queue<int> q;
    int n,k,x;
    cin>>n>>k;
    for(int i=1;i<=k;i++) cin>>x, q.push(-x);
    for(int i=k+1;i<=n;i++) cin>>x, q.push(-x), cout<<-q.top()<<endl, q.pop();
    for(int i=1;i<=k;i++) cout<<-q.top()<<endl, q.pop();
}
原文地址:https://www.cnblogs.com/mollnn/p/13677115.html