之前写的代码,现在改不出来/kk
#include<bits/stdc++.h>
using namespace std;
struct node{
int prev,next,value;
};
node lis[200005];
int n,k[200005],q,head,tail;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n;
for(register int i=0;i<n;i++){
lis[i].next=i+1;
lis[i].prev=i-1;
cin>>lis[i].value;
}
lis[n-1].next=-1;
head=0;tail=n-1;
q=n;
while(q){
memset(k,0,sizeof(k));
register int p=0;
for(register int i=head;i!=-1;i=lis[i].next){
if(lis[i].prev==-1||lis[i].value!=lis[lis[i].prev].value){
cout<<i+1<<" ";
q--;
k[p++]=i;
}
}
for(register int i=0;i<p;i++){
if(k[i]==head)head=lis[k[i]].next;
if(k[i]==tail)tail=lis[k[i]].prev;
lis[lis[k[i]].prev].next=lis[k[i]].next;
lis[lis[k[i]].next].prev=lis[k[i]].prev;
}
cout<<"\n";
}
}