思路是第i个数应该插到1~i-1中a值小于它的最后一个数后面,求证伪或hack
#include <bits/stdc++.h>
using namespace std;
const int N=8010;
int a[N],ans[N],cnt;
struct Node{
int id,num;
};
priority_queue<Node> Q;
bool operator<(const Node &x,const Node &y){
if(x.num!=y.num) return x.num>y.num;
return x.id<y.id;
}
int main(){
int n;cin>>n;
for(int i=2;i<=n;i++){
cin>>a[i];
}
Q.push((Node){1,0});
for(int i=2;i<=n;i++){
Q.push((Node){i,a[i]});
}
while(!Q.empty()){
ans[Q.top().id]=++cnt;
Q.pop();
}
for(int i=1;i<=n;i++){
cout<<ans[i]<<endl;
}
return 0;
}