关于C++98
查看原帖
关于C++98
537520
DESTRUCTION_3_2_1楼主2022/1/1 13:24
#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编译错误?

2022/1/1 13:24
加载中...