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
- 通过率
- ?
- 上传者