题目:
思路:
参考
AC代码:
#include <bits/stdc++.h>
using namespace std;
const int maxn=211111;
int n,m,a[maxn],u[maxn];
priority_queue<int> q1;
priority_queue<int,vector<int>,greater<int>> q2;
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=m;i++) cin>>u[i];
q1.push(a[1]);
int cnt=1;
while(u[cnt]==1)
{
cout<<a[1]<<endl;
cnt++;
}
for(int i=2;i<=n;i++)
{
if(a[i]>q1.top()) q2.push(a[i]);
else q1.push(a[i]);
//cout<<"i="<<i<<" "<<"u[cnt]="<<u[cnt]<<" "<<"cnt="<<cnt<<endl;
while(i==u[cnt])
{
//cout<<"i="<<i<<" "<<"u[cnt]="<<u[cnt]<<" "<<"cnt="<<cnt<<endl;
while(q1.size()!=cnt)
{
//cout<<"q1.size()="<<q1.size()<<endl;
if(q1.size()>cnt)
{
int x=q1.top();
q1.pop();
q2.push(x);
}
else
{
int x=q2.top();
q2.pop();
q1.push(x);
}
}
cout<<q1.top()<<endl;
cnt++;
}
}
return 0;
}