代码:
#include<bits/stdc++.h>
using namespace std;
int n,a[200005],cnt;
struct node{
int id,x;
}b[200005];
bool vis[200005];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",a+i);
while(cnt<n){
int sum=0,pos;
for(int i=1;i<=n;i++)
if(!vis[i])
b[++sum].x=a[i],b[sum].id=i;
pos=b[1].id;
for(int i=1;i<=sum;i++){
if(b[i].x!=b[i+1].x||i==sum){
vis[pos]=true;
cnt++;
printf("%d ",pos);
pos=b[i+1].id;
}
}
printf("\n");
}
return 0;
}
这应该是 O(n2) 的,但过了70分,建议加上一组Hack数据,即全0或全1。