求助为何不可以这样做
查看原帖
求助为何不可以这样做
235901
Always_Remember_It楼主2024/10/15 22:12

思路是第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;
}
2024/10/15 22:12
加载中...