T#6#8 Why?
查看原帖
T#6#8 Why?
873417
Istruggle楼主2024/6/24 11:07
#include<bits/stdc++.h>
using namespace std;
int n;
struct lis{
	int x,pre,nex,f;
	lis(){};
	lis(int a,int b,int c):x(a),pre(b),nex(c){};
}t[200005];
int main(){
	scanf("%d",&n);
	for(int i = 1;i<=n;i++){
		int tmp; scanf("%d",&tmp);
		t[i]=lis(tmp,i-1,i+1);
		t[i].f=1;
	}
	t[1].pre=n,t[n].nex=1;
	int num=n,p=1;
	while(num){
		int m=0;
		printf("%d ",p);
		int pr=t[p].pre,ne=t[p].nex;
		t[pr].nex=ne,t[ne].pre=pr; t[p].f=0;
		num--;
		int index=t[p].nex;
		m=0;
		while(t[index].x==t[p].x){
			m++;
			if(m==n) break;
			if(index<p) break;
			index=t[index].nex;
			
			if(index==t[index].nex) break;
		}
		if(m==n) break;
		if(index==t[index].nex) break;
		if(p>index) cout<<endl;
		p=index;
	}
	int z=p;
    for(int i = 1;i<=n;i++) {
    	if(t[i].f==1)
    	{
    		if(t[z].x==t[i].x) cout<<endl; cout<<i<<" ";
		}
	}
} 


2024/6/24 11:07
加载中...