#B3666. 求数列所有后缀最大值的位置

求数列所有后缀最大值的位置

B3666 求数列所有后缀最大值的位置

  • 题号:B3666
  • 难度:普及(3)
  • 标签:O2优化、单调栈
  • 时间限制:1000 ms
  • 内存限制:512 MB
  • 样例数:1
  • 提交 / 通过:23566 / 7197
  • 抓取时间:2026-11-11T08:52:12.810Z
  • 正文来源:problem.content(zh-CN)

题目描述

给定一个数列 aa,初始为空。有 nn 次操作,每次在 aa 的末尾添加一个正整数 xx。

每次操作结束后,请你找到当前 aa 所有的后缀最大值的下标(下标从 11 开始)。一个下标 ii 是当前 aa 的后缀最大值下标当且仅当:对于所有的 i<j≤∣a∣i < j \leq |a|,都有 ai>aja_i > a_j,其中 ∣a∣|a| 表示当前 aa 的元素个数。

为了避免输出过大,请你每次操作结束后都输出一个整数,表示当前数列所有后缀最大值的下标的按位异或和。

输入格式

第一行是一个整数,表示操作次数 nn。
第二行有 nn 个整数,依次表示 nn 次操作所添加的整数 xix_i。

输出格式

每次操作后请输出一行一个整数,表示当前数列所有后缀最大值下标的按位异或和。

样例

样例 1 输入

5
2 1 3 5 4

样例 1 输出

1
3
3
4
1

提示

数据规模与约定

对于全部的测试点,保证 1≤n≤1061 \leq n \leq 10^6,1≤xi<2641 \leq x_i \lt 2^{64}。请注意大规模数据输入输出对程序效率产生的影响。


由 fetch_luogu_statements.mjs v1.0.0 自动抓取生成;原始数据见 json/B3666.json。