求调!!!!!
#include<bits/stdc++.h>
using namespace std;
struct node{
list<int>lt;
int id;
};
queue<node>q;
int len=1;
int a[200010];
vector<int>v[200010];
int main(){
//freopen("C:\\Users\\Administrator\\Desktop\\P7912_5.in","r",stdin);
//freopen("C:\\Users\\Administrator\\Desktop\\P7912_5.out","w",stdout);
int n;
scanf("%d",&n);
int cnt=1;
list<int>lt;
int mn=1e9;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
if(i==1 || a[i]==a[i-1]){
lt.push_back(i);
len++;
}
else{
q.push({lt,a[i-1]});
lt.clear();
mn=min(mn,len);
lt.push_back(i);
len=1;
}
}
if(len){
mn=min(mn,len);
q.push({lt,a[n]});
cnt++;
}
lt.clear();
while(!q.empty()){
int op=0;
int f=0;
int ou=0;
deque<node>m;
while(!q.empty()){
auto p=(q.front()).lt;
int id=(q.front()).id;
q.pop();
op++;
for(int i=0;i<mn;i++){
v[i].push_back(p.front());
p.pop_front();
}
len=p.size();
if(f && m.empty()){
f=0;
}
if(f && p.size() && ou!=id){
auto y=(m.back()).lt;m.pop_back();
y.splice(y.end(),p);
m.push_back({y,id});
f=0;
continue;
}
else if(f && p.size()){
f=0;
}
if(!len && !f){
f=1;
ou=id;
continue;
}
if(len){
m.push_back({p,id});
}
}
for(int i=0;i<mn;i++){
for(int j=0;j<op;j++){
printf("%d ",v[i][j]);
}
printf("\n");
v[i].clear();
}
while(!m.empty()){
auto p=m.front();m.pop_front();
len=(p.lt).size();
mn=min(len,mn);
q.push(p);
}
}
}