用题目的标准输入输出流还是超时
#include<bits/stdc++.h>
using namespace std;
struct zu{
queue<int> px;
int zl;
}z[200005];
int n,la,a;
int main(){
z[0].zl=-1;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a);
if(a!=z[la].zl){
la++;
z[la].px.push(i);
z[la].zl=a;
}else{
z[la].px.push(i);
}
}
while(la>=1){
//for(int i=1;i<=2;i++){
for(int i=1;i<=la;i++){
printf("%d ",z[i].px.front());
//cout<<z[i].px.front()<<" ";
z[i].px.pop();
}
printf("\n");
while(1){
int s=la;
for(int i=1;i<=s;i++){
if(z[i].px.empty()){
s--;
for(int j=i;j<=s;j++){
z[j].zl=z[j+1].zl;
swap(z[j].px,z[j+1].px);
}
}
}
for(int i=1;i<s;i++){
if(z[i].zl==z[i+1].zl){
while(!z[i+1].px.empty()){
z[i].px.push(z[i+1].px.front());
z[i+1].px.pop();
}
s--;
for(int j=i+1;j<=s;j++){
z[j].zl=z[j+1].zl;
swap(z[j].px,z[j+1].px);
}
}
}
if(s==la){
break;
}
la=s;
}
}
return 0;
}