思路
拒绝对顶堆!STL大法,简明易懂
Code
#include <bits/stdc++.h>
using namespace std;
int n,m,now,ip[30010],q[30010],Ip;
vector<int>a;
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>ip[i];
}
for(int i=1;i<=m;i++)
{
cin>>q[i];
}
sort(q+1,q+m+1);
for(int i=1;i<=n;i++)
{
a.insert(lower_bound(a.begin(),a.end(),ip[i]),ip[i]);
while(i==q[now+1])
{
cout<<a[now++]<<endl;
}
}
}
vector的insert复杂度是最坏O(n),所以你的做法的复杂度是最坏O(n^2),但常数较小所以能过。
如果这样的话 是不是可以树状数组求整体区间第k小优化到严格nlogn
是。
%%%
TQL%%%