题目背景
原题为交互试题,但在此请提交完整程序。
题目描述
给定一个长度为 n且初始值全为 0的序列。你需要支持以下两种操作:
- Add L,R,h:将序列 [L,R]内所有值小于 h的元素都赋为 h,此时不改变高度大于 h的元素值
- Remove L,R,h:将序列 [L,R]内所有值大于 h的元素都赋为 h,此时不改变高度小于 h的元素值
你需要输出进行 k次上述操作之后的序列。
输入格式
输入的第一行包含两个正整数 n,k,分别表示序列中元素的个数以及操作数量,注意:序列下标编号为 0 ~ n−1。
接下来 k行每行包含 4个整数 t,L,R,h,若 t=1则表明为 Add 操作,若 t=2则表明为 Remove 操作。 L,R,h的含义见题目描述。
输出格式
输出包含 n行,每行包含 1个整数。第 i行的整数表示 k次操作之后序列中编号为 i−1的元素的值。
提示
- 子任务#1(8分):满足 1≤n≤10000,1≤k≤5000;
- 子任务#2(24分):满足 1≤n≤100000,1≤k≤500000,全部增加操作均在全部移除操作之前;
- 子任务#3(29分):满足 1≤n≤100000,1≤k≤500000;
- 子任务#4(39分):满足 1≤n≤2000000,1≤k≤500000。
所有操作的高度 h满足 0≤h≤100000。