pair模板题
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
题目描述
现有一个存储整数对(Pair)的容器,支持以下操作:插入整数对、查询指定索引的整数对、修改指定索引的整数对、按第一元素升序排序、按第二元素升序排序和反转容器。你需要实现这个容器,并处理可能的边界情况。具体规则如下:
- 插入操作:在容器末尾添加一个整数对。
- 查询操作:获取指定索引位置的整数对。
- 修改操作:修改指定索引位置的整数对。
- 第一元素排序:按整数对的第一元素升序排序,若第一元素相同则按第二元素升序排序。
- 第二元素排序:按整数对的第二元素升序排序,若第二元素相同则按第一元素升序排序。
- 反转操作:反转容器中所有整数对的顺序。
操作完成后,需输出最终容器中的所有整数对(按存储顺序)。
输入格式
- 第一行输入一个整数
q
(1 ≤ q ≤ 100000
),表示操作的总次数。 - 接下来
q
行,每行表示一次操作,格式如下:- 插入操作:
1 a b
(插入整数对(a, b)
)。 - 查询操作:
2 idx
(查询索引为idx
的整数对,索引从0开始)。 - 修改操作:
3 idx a b
(将索引为idx
的整数对修改为(a, b)
)。 - 第一元素排序:
4
(按第一元素升序排序)。 - 第二元素排序:
5
(按第二元素升序排序)。 - 反转操作:
6
(反转容器顺序)。
- 插入操作:
输出格式
- 对于每次查询操作(操作2),输出一行:
- 若索引合法,输出对应的整数对
a b
;
- 若索引合法,输出对应的整数对
- 所有操作完成后,输出多行:
- 每行包含两个整数
a b
,表示容器中的一个整数对,按存储顺序输出。 - 若容器为空,不输出任何行。
- 每行包含两个整数
样例 1 输入
6
1 3 2
1 1 4
1 2 1
4
2 0
2 2
样例 1 输出
1 4
3 2
1 4
2 1
3 2
样例说明
- 插入操作:依次插入
(3, 2)
、(1, 4)
、(2, 1)
,容器变为[(3, 2), (1, 4), (2, 1)]
。 - 第一元素排序:按第一元素升序排序后,容器变为
[(1, 4), (2, 1), (3, 2)]
。 - 查询操作:索引0的整数对为
(1, 4)
,输出1 4
。 - 查询操作:索引2的整数对为
(3, 2)
,输出3 2
。 - 最终输出:按存储顺序输出所有整数对
1 4
、2 1
、3 2
。
测试点约束
- 操作次数
q ≤ 100000
。 - 所有整数对的元素取值范围为
int
(-2^31 ~ 2^31-1)。 - 所有索引
idx
均为非负整数。 - 4 5 6操作一共最多出现一次
- 保证所有操作合法
提示
- 排序规则:排序时需严格按照题目指定的优先级(如第一元素优先、第二元素次之)。
- 边界检查:查询和修改操作需检查索引是否合法。
- 高效实现:排序操作的时间复杂度应为O(n log n)。
竞赛3班7.26日习题课
- Status
- Done
- Rule
- IOI
- Problem
- 13
- Start at
- 2025-7-26 14:00
- End at
- 2025-7-26 20:00
- Duration
- 6 hour(s)
- Host
- Partic.
- 9