AlgoMooc
← 返回题库

P5151. 士兵的序列

简单通过率 51% · 提交 63 · 通过 32
单调栈模拟排序

小慕买了一些玩具士兵,他邀请朋友小悦一起玩。 他总共有n个士兵,刚开始时,这n个士兵被排成一列,第i个士兵的为hi。 然后小慕和小悦开始给它们排序。两人总共进行了m次操作。 小慕的每次操作会选择一个数k,将按战斗力从小到大排序。 小悦的每次操作会选择一个数k,将前k个士兵按战斗力从大到小排序。 请问所有操作结束后从前往后每个士兵的战斗力是多少?

提示:带虚线的词点一下有通俗解释。

输入描述

输入的第一行包含两个整数,n和m,用空格分隔。其中,n代表士兵的总数,m代表操作的次数。 输入的第二行包含n个整数,用空格分隔。这些整数表示每个士兵的战斗力,按照他们初始的顺序排列。 接下来的m行描述操作的记录。每一行包含两个整数,tmp和k,用空格分隔。 其中,tmp表示操作者,1表示小明,2表示小红;k表示选择的数。这些操作记录描述了小明和小红按照题目要求的方式对士兵进行排序的过程。

输出描述

一个包含n个整数的行,每个整数表示最终排列后每个士兵的战斗力

示例

示例 1

输入

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

输出

1 3 4 5 2

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解(训练营专属)

登录后查看题目图解

题目图解为训练营学员专属内容,请先登录。

微信扫码登录还不是训练营学员?了解训练营 →
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「士兵的序列」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。