欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

黑盒子--------------------------------思维(对顶堆)

程序员文章站 2024-02-14 10:07:40
...

黑盒子--------------------------------思维(对顶堆)
黑盒子--------------------------------思维(对顶堆)

黑盒子--------------------------------思维(对顶堆)


#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;
        
    }
}
相关标签: 算法进阶指南