黑盒子--------------------------------思维(对顶堆)
程序员文章站
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;
}
}