搜索
热搜: NOIP OIer 神牛
查看: 239|回复: 0

3390

[复制链接]

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-7-17 15:40:11 | 显示全部楼层 |阅读模式
#include <bits/stdc++.h>
#define MAXN 200100
using namespace std;
int n, a[MAXN], l[MAXN], r[MAXN];
vector<int> b;
int main() {
    scanf("%d", &n);
    a[0] = a[n + 1] = -1, r[0] = 1, l[n + 1] = n;
    for (int i = 1; i <= n; i++) {
        scanf("%d", &a[i]);
        if (a[i] != a[i - 1]) b.push_back(i);
        l[i] = i - 1, r[i] = i + 1;
    }
    while (r[0] != n + 1) {
        vector<int> tmp;
        for (int i = 0; i < b.size(); i++) {
            printf("%d ", b[i]);
            int u = l[b[i]], v = r[b[i]];
            r[u] = v, l[v] = u;
            if (a[b[i]] != a[u] && a[b[i]] == a[v]) tmp.push_back(v);
        }
        puts("");
        b = tmp;
    }
    return 0;
}       

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

津ICP备19006949号-1 | 津公网安备12010102000465号

快速回复 返回顶部 返回列表