@[庄邦宇](/space/show?uid=81364) 大佬啊,你写的不是堆啊,你是更新一次排序一次,单次更新复杂度为nlogn,如果是堆的话单次更新复杂度为logn
推荐一发stl优先队列
```cpp
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
int ad[200005],nu[200005],m,n,a,b,c,d,jsq,cnt,zcq;
priority_queue<int> xgd;
priority_queue<int> dgd;
void hs(int x)
{
cout<<-xgd.top()<<endl;
zcq=-xgd.top();
dgd.push(zcq);
xgd.pop();
cnt++;
jsq=ad[cnt];
if(jsq==x)
{
hs(x);
}
}
int main()
{
cin>>m>>n;
for(a=1;a<=m;a++)
{
cin>>nu[a];
}
for(a=1;a<=n;a++)
{
cin>>ad[a];
}
jsq=ad[1];
cnt=1;
for(a=1;a<=m;a++)
{
if(cnt!=1)
{
zcq=dgd.top();
}
else
{
zcq=-99999999;
}
if(nu[a]<zcq)
{
xgd.push(-zcq);
dgd.pop();
dgd.push(nu[a]);
}
else
{
xgd.push(-nu[a]);
}
if(a==jsq)
{
hs(jsq);
}
}
}
```
by ztz11 @ 2018-07-12 10:31:08
@[ztz11](/space/show?uid=52176) 奇怪变量名重出江湖
by XiaoX @ 2018-07-12 10:32:29