TLE on #6,#8,#9,#10。
#include <bits/stdc++.h>
using namespace std;
struct fruit {
int nxt, pre, id, l;
} a[200010];
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i].l);
a[i].id = i;
if (i != n) {
a[i].nxt = i + 1;
}
if (i != 1) {
a[i].pre = i - 1;
}
}
int head = 1;
while (a[head].nxt != 0) {
int x = head, y = a[head].l;
printf("%d ", a[x].id);
head = a[head].nxt;
while (a[x].nxt != 0) {
x = a[x].nxt;
if (a[x].l != y) {
printf("%d ", a[x].id);
y = a[x].l;
if (x == head) {
head = a[x].nxt;
}
int tmp = x;
a[a[tmp].pre].nxt = a[x].nxt;
a[a[x].nxt].pre = a[tmp].pre;
}
}
printf("\n");
}
if (head != 0) {
printf("%d ", a[head].id);;
}
return 0;
}