用堆写的,40pts警示后人

P1923 【深基9.例4】求第 k 小的数

the_three_body @ 2024-09-06 11:14:41

代码:

#include<bits/stdc++.h>
using namespace std;

int main(){
    int n, k;
    scanf("%d%d",&n,&k);

    int a[n+4];
    for(int i = 0; i < n; i++){
        scanf("%d",&a[i]);
    }

    priority_queue<int> pq;
    for(int i : a){
        if(pq.size()<k+1){
            pq.push(i);
        } else if(i<pq.top()){
            pq.pop();
            pq.push(i);
        }
    }
    cout << pq.top();
    return 0;
}

注意:for(int i:a) 是遍历所有元素,包括未定义的


|