TLE,求助
查看原帖
TLE,求助
517110
ckjETO楼主2022/8/8 21:02

代码

#include<bits/stdc++.h>
using namespace std;
struct node{
	int r,l;
	int v,xb;
}s[200010];
int vis[200010],k,n,cnt;
void into(int k,int a,int x){
	++cnt;
	s[cnt].xb=x;
	s[cnt].v=a;
	int kr=s[k].r;
	s[k].r=cnt;
	s[cnt].l=k;
	s[cnt].r=kr;
	s[kr].l=cnt;
}
void de(int k){
	int kl=s[k].l;
	int kr=s[k].r;
	s[kl].r=kr;
	s[kr].l=kl;
}
int main(){
	scanf("%d",&n);
	s[0].v=-1;
	s[0].r=n+1;
	s[n+1].v=2;
	s[n+1].l=0;
	for(int i=1;i<=n;i++){
		scanf("%d",&k);
		into(i-1,k,i);
	}
	while(s[0].r!=n+1){
		int t=0;
		for(int i=s[0].r;i!=n+1;i=s[i].r)
			if(s[i].v!=s[s[i].l].v) vis[++t]=i;
		for(int i=1;i<=t;i++){
			printf("%d ",s[vis[i]].xb);
			de(vis[i]);
		}
	    printf("\n");
	}
}
2022/8/8 21:02
加载中...