#1834. stl之任务调度
stl之任务调度
Description
学校有一个任务调度中心,需要管理学生提交的任务。
每个任务包含两个属性:
- id:任务编号,保证全局唯一。
- priority:任务优先级,数值越大,优先级越高。 现在有 q 次操作,需要你维护任务调度中心。
支持以下四种操作:
操作 1:添加任务 ·1 id priority
向调度中心添加一个编号为 id、优先级为 priority 的任务。
保证每个任务编号只会被添加一次。
操作 2:取消任务 ·2 id
取消编号为 id 的任务。
如果该任务不存在或者已经被执行、取消,则不进行任何操作。
操作 3:执行任务 ·3
从当前所有未执行、未取消的任务中,选择优先级最高的任务执行,并输出它的编号和优先级。
如果存在多个优先级相同的任务,则选择编号最小的任务。
如果当前没有任务,输出 -1。
执行后,该任务从调度中心中删除。
操作 4:查询最小编号 ·4
查询当前所有未执行、未取消的任务中编号最小的任务,并输出它的编号。
注意:该操作只查询,不会执行或者删除任务。
如果当前没有任务,输出 -1。
Format
Input
第一行输入一个整数 q,表示操作次数。
接下来 q 行,每行表示一种操作。 数据范围
1 <= q <= 2e5
1 <= id,priority <= 1e9
保证每个任务编号最多添加一次。
Output
对于每次操作 3 和操作 4,按照题目要求输出结果。
Samples
11
1 10 5
1 20 8
1 15 8
4
3
2 20
3
3
1 7 10
4
3
10
15 8
10 5
-1
7
7 10
Limitation
1s, 1024KiB for each test case.