黑盒子--------------------------------思維(對頂堆)

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述


#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],b[N];
int n,m;
int main()
{
    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    for(int i=1;i<=m;i++) scanf("%d",&b[i]);
    priority_queue<int> l;
    priority_queue<int,vector<int>,greater<int> > r;
    sort(b+1,b+1+m);
    for(int i=1,j=1;i<=m;i++)
    {
        while(j<=b[i])
        {
            if(l.empty()||a[j]>=l.top()) r.push(a[j]);
            else
            {
                r.push(l.top());
                l.pop();
                l.push(a[j]);
            }
            j++;
        }
        l.push(r.top());
        r.pop();
        cout<<l.top()<<endl;
        
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章