vector 求第k大数 精简代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10 ;
vector<int> q ;
int n , h[N] , ans[N] ;
int main()
{
cin >> n ;
for(int i = 2 ; i <= n ; i ++) scanf("%d",h + i) ;
for(int i = 1 ; i <= n ; i ++) q.push_back(i) ;
for(int i = n ; i >= 1 ; i --)
{
int k = h[i] + 1;
ans[i] = q[k-1] ;
q.erase(lower_bound(q.begin(),q.end(),q[k-1])) ;
}
for(int i = 1 ; i <= n ; i ++) cout << ans[i] << "\n" ;
return 0;
}
好思路,牛的
复杂度多少,难道是n^2logn
瓶颈n^2
只不过vector的erase函数太快了 虽然瓶颈是on
大佬好
你也是未来的大佬