题目背景
upd 2023.1.17 数据已加强。
upd 2023.10.18 空间限制调整为 100 MiB。
Bessie 正在玩一场卡牌游戏!
这个游戏有一些神秘的规则。Bessie 需要用一些编程技巧,加快计算。
题目描述
牌堆可以看成一个长度为 N 的数列,下标为 i 的位置值为 ai。(1≤i≤N)
有 Q 次操作,每次操作给定 li,ri,vi,∀li≤j≤ri,aj←aj∨vi。
其中 ∨ 表示按位或操作,即 C++ 中的 |
。
对于 i=1,2,…,N,求出在哪一次操作后,ai 首次严格大于 P,其中 P 为一给定常数。
数据保证在初始情况下,P≥max{ai}。
输入格式
第一行三个整数 N,Q,P。
第二行 N 个整数,第 i 个数为 ai 的初始值。
接下来 Q 行,每行三个整数,li,ri,vi。
输出格式
输出 N 个数 id1,id2,…,idN,第 i 个数表示在第 idi 次操作后,ai 首次严格大于 P。
如果 ai 始终小于等于 P,请在这一位输出 −1。
提示
样例 #1 解释
第一次操作后的数列为 1,2,3,4,5。
第二次操作后的数列为 11,2,3,4,5。
第三次操作后的数列为 11,6,7,4,5。
……
最终的数列为 11,14,15,4,23。
数据范围
全部数据满足:1≤N,Q≤106,1≤li≤ri≤N,1≤ai,vi,P≤109。
测试点 1∼2 另满足 1≤N,Q≤103。
测试点 3 另满足 li=ri。
测试点 4 另满足 li=1,ri=N。
测试点 5∼10 无额外限制。
本题数据规模较大,请注意常数优化。