HM229 改序集合

HM229 改序集合

HM229 改序集合

来源: 第 229 集 set容器-内置类型指定排序规则

难度: 普及-

时间限制: 1s

空间限制: 64MB

题目描述

把整数插入 set 后,默认比较规则是从小到大。这条规则在**插入完成之后无法再改**:元素已经按升序落进树里。若要改成从大到小,必须在创建容器、尚未插入时,于模板参数列表的第二个参数处指定比较器。

比较器要用仿函数:写一个类,在其中重载函数调用运算符 operator()。它本质上是一个**类型**,不是函数名,因此可以放进模板参数。对两个 int 做降序比较时,返回值应为布尔类型,并在“前一个数大于后一个数”时返回真。

迭代器类型也跟着比较器走。默认集合的迭代器是 set<int>::iterator;指定了仿函数 MyCompare 之后,必须写成 set<int, MyCompare>::iterator

读入一段整数。把它们插入默认的升序集合 s1,同时插入使用仿函数、在创建时就指定降序的集合 s2。分别按各自迭代器顺序打印。

输入格式

第一行一个整数 \(n\)。

第二行 \(n\) 个整数,按给定顺序插入两个集合。当 \(n=0\) 时本行可以是空行。

输出格式

第一行:s1 中的全部元素(升序、去重)。

第二行:s2 中的全部元素(降序、去重)。

空集合对应的那一行只输出换行。

样例

输入 #1

5
10 40 20 50 30

输出 #1

10 20 30 40 50
50 40 30 20 10

输入 #2

4
3 1 3 2

输出 #2

1 2 3
3 2 1

说明

\(0 \le n \le 1000\),元素绝对值不超过 \(10^9\)。

不要先插完再试图改序,也不要插完后拷到 vector 里再 sort。必须在创建 s2 时放入仿函数类型,插入过程中按该规则落点。

信息

ID
1228
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者