POJ 1442Black Box优先队列求前a[k]个数中第k大的数

    xiaoxiao2023-11-21  2

    维护两个队列,

    开A

    #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <vector> #include <set> #include <map> #include <stack> #include <queue> using namespace std; int a[31000]; int main() { int m, n; scanf("%d %d", &m, &n); int i, j; for(i = 0;i < m;i++){ scanf("%d", &a[i]); } int k; priority_queue<int, vector<int>, less<int> >big; priority_queue<int, vector<int>, greater<int> >small; j = 0; int t; for(i = 1;i <= n;i++){ scanf("%d", &k); while(j < k){ small.push(a[j]); if(!big.empty()&&small.top() < big.top()){ t = big.top(); big.pop(); big.push(small.top()); small.pop(); small.push(t); } j++; } printf("%d\n", small.top()); big.push(small.top()); small.pop(); } return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-1284157.html
    最新回复(0)