#P15615. [2023年保加利亚国家队组队赛Junior]Awarding颁奖
[2023年保加利亚国家队组队赛Junior]Awarding颁奖
题目描述
几个月前,Kyusho 参加了远方城市 Overton 的一次颁奖典礼。
在比赛中,每位参赛者都有一个写着唯一编号的胸牌。颁奖过程非常混乱:不断有人登上舞台或离开舞台,也会在随机时刻给一段连续的参赛者颁发证书。
Kyusho 想知道:有多少离开舞台的人至少获得过一张证书。为描述这个过程,他把事件分成三类:
- 当前站在最左边或最右边的参赛者离开舞台。
- 给当前舞台上从编号为 的参赛者到编号为 的参赛者之间的所有人颁发证书,包括 与 本人。保证 与 当前都在舞台上,并且 位于 的左侧。若数据中出现 ,表示只给该参赛者颁发证书。
- 编号为 的参赛者登上舞台,并站在编号为 与 的两名参赛者之间。保证此前 从未登上过舞台,并且当前 与 相邻。
请你处理所有事件。对于每个第 1 类事件,判断离开舞台的参赛者是否至少获得过一张证书。
输入格式
第一行包含两个整数 ,分别表示初始在舞台上的参赛者数量和事件数量。
第二行包含 个整数,表示初始时参赛者从左到右的编号。
接下来 行,每行描述一个事件:
- 若事件类型 ,则随后输入一个整数 :
- 表示最左边的参赛者离开;
- 表示最右边的参赛者离开。
- 若事件类型 ,则随后输入两个整数 ,表示给从 到 这一段参赛者颁发证书。
- 若事件类型 ,则随后输入三个整数 ,表示参赛者 站到相邻的 与 之间。
输出格式
输出一行一个由 0 和 1 组成的字符串,依次表示所有第 1 类事件的答案。
若对应离开的参赛者至少获得过一张证书,则输出 1,否则输出 0。
样例
5 9
3 5 2 1 6
2 5 1
3 5 2 4
3 1 6 7
1 1
1 1
2 2 7
1 2
1 2
1 1
01010
样例解释
初始队列为:
3 5 2 1 6
第一次颁奖给编号 的参赛者。
之后 插入到 与 之间, 插入到 与 之间,队列变为:
3 5 4 2 1 7 6
随后离场事件依次为:
- 离开,未获奖,输出
0; - 离开,已获奖,输出
1; - 第二次颁奖给从 到 的一段参赛者;
- 离开,未获奖,输出
0; - 离开,已获奖,输出
1; - 离开,未获奖,输出
0。
因此输出为 01010。
数据范围
- 保证任意时刻舞台上至少有两名参赛者。
子任务
| 子任务 | 分值 | 额外限制 | ||
|---|---|---|---|---|
| 1 | 20 | 无 | ||
| 2 | 没有第 3 类事件 | |||
| 3 | 15 | 每个第 2 类事件中, 分别是当前最左、最右的参赛者编号 | ||
| 4 | 每个第 2 类事件均满足 | |||
| 5 | 30 | 无 | ||
只有通过一个子任务内的全部测试,才能获得该子任务分数。