#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int a[N], L[N], R[N], u;
int main() {
int n;
scanf("%d", &n);
vector<int> b;
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
if (i == 1 || a[i] != a[i - 1]) b.push_back(i);
L[i] = i - 1;//i左边的前驱
R[i] = i + 1;//i右边的后继
}
R[0] = 1, L[n + 1] = n;
a[0] = a[n + 1] = -1;
while (R[0] != n + 1) { //第0个元素的后继
vector<int> c;
for (auto u : b) {
printf("%d ", u);
int x = L[u], y = R[u];//x:u的前驱 y:u的后继
R[x] = y, L[y] = x; //x-u-y x的后继更新为y y的前驱更新为x
if (a[u] == a[y] && a[u] != a[x]) c.push_back(y);
}
printf("\n");
swap(b,c);
}
return 0;
}
此代码为什么在C++98编译错误?