G.王梦涵学长的迷弟
题目描述:
输入描述:
输出描述:
示例:
思路:每次找出队列中的最小元素,加一后有序地放回队列,最后输出最小的元素。正好可以使用 STL 里的优先队列来对元素每次加一后重新排列。
这里插入下优先队列的用法:
所以我们用升序的优先队列来排序,需要先申请一个优先队列,名为 s :
priority_queue<int, vector<int>, greater<int> > s;
AC代码如下:
#include <bits/stdc++.h>
using namespace std;
int n,k;
int main()
{
cin >> n >> k;
//升序的优先队列
priority_queue<int, vector<int>, greater<int> >s;
for (int i = 0; i < n; i++){
int x;
cin >> x;
//放入队列中
s.push(x);
}
while (k--){
//取出队首元素加一后再放入队列中
int m = s.top();
s.pop();
s.push(++m);
}
//第一个元素最小
cout << s.top() << endl;
return 0;
}