#687. 卡片分段整理

卡片分段整理

题目描述

小杨有 nn 张卡片,从左到右编号为 11nn,第 ii 张卡片的数值为 aia_i。之后他进行了 qq 次整理操作,每次选择一个连续区间 [l,r][l,r]:若操作类型为 00,则将该区间内的卡片按数值从小到大排列;若操作类型为 11,则将该区间内的卡片按数值从大到小排列。若两张卡片数值相同,无论升序还是降序,编号较小的卡片都排在前面。请输出所有操作完成后卡片编号的顺序以及对应的数值顺序。

输入格式

第一行包含两个整数 nnqq

第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n

接下来 qq 行,每行包含三个整数 llrrop,表示一次整理操作。其中 op=0 表示升序整理,op=1 表示降序整理。

输出格式

输出两行。第一行输出最终从左到右的卡片编号;第二行输出最终从左到右的卡片数值。每行相邻两个数之间用一个空格分隔,行末不要输出多余空格。

样例

5 3
4 2 4 1 3
1 5 0
2 4 1
3 5 0
4 1 2 5 3
1 4 2 3 4

样例解释

第一次将全部卡片按数值升序排列,得到编号 4 2 5 1 3;第二次整理第 22 到第 44 张,得到 4 1 5 2 3;第三次整理第 33 到第 55 张,最终得到编号 4 1 2 5 3

数据范围

1n10001 \le n \le 10000q1000 \le q \le 1001ai1091 \le a_i \le 10^91lrn1 \le l \le r \le nop 只能为 0011