用优先队列写的,只有40分,怎么解决
查看原帖
用优先队列写的,只有40分,怎么解决
1140371
ruanertanjing楼主2024/8/3 23:27
// P1923 【深基9.例4】求第 k 小的数
// https://www.luogu.com.cn/problem/P1923

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cmath>
#include <unordered_map>
#include <unordered_set>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <deque>
#include <functional>
#include <climits>

#define quickio ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define endl "\n"

using namespace std;
typedef long long ll;

const int N = 5000000;
int a[N];
int n, k;

// 优先队列
void solve()
{
	// 注意优先队列的写法
	// 这样子写才是升序,小根堆
	// 默认大根堆,是降序
	priority_queue<int, vector<int>, greater<int>>que;
	for (int i = 0; i < n; i++)
	{
		cin >> a[i];
		que.push(a[i]);
	}
	k--;
	while (k--)
		que.pop();
	cout << que.top();
}

int main()
{
	quickio;
	cin >> n >> k;
	solve();
	return 0;
}
2024/8/3 23:27
加载中...