HM202 货架互换与瘦身

HM202 货架互换与瘦身

HM202 货架互换与瘦身

来源: 第 202 集 vector容器-互换容器

难度: 普及-

时间限制: 1s

空间限制: 64MB

题目描述

两座货架可以用成员函数 swap 互换全部元素:v1.swap(v2) 之后,原先在 v1 上的货物全部到 v2,反之亦然。

swap 还有一个实际用途:给过大的容量瘦身。反复尾插后容量往往大于大小;再 resize 变短时,**容量不会跟着缩小**,多出来的坑就被浪费了。可以构造一个匿名对象,再和原货架互换:

vector<int>(v).swap(v)

匿名对象按当前元素个数拷贝构造,容量与大小相同;互换之后原货架指向这块紧凑空间。匿名对象带着那块浪费的大空间,本行结束时由系统回收。

本题分两步:

  1. 读入两座货架,先打印交换前,再 swap,再打印交换后。
  2. 另建一座货架,把第一座货架读入时的那 \(n\) 个数重新尾插一遍,再 resize(k)(保证 \(k < n\))。先输出此时的大小,以及「容量是否严格大于大小」;再按上面的写法收缩内存,输出大小,以及「容量是否等于大小」。

不要输出容量的具体数字。

输入格式

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

第二行 \(n\) 个整数 \(a_i\),依次尾插入 v1

第三行一个整数 \(m\)。

第四行 \(m\) 个整数 \(b_i\),依次尾插入 v2

第五行一个整数 \(k\),表示收缩演示里的 resize(k)

输出格式

第一、二行:交换前的 v1v2

第三、四行:交换后的 v1v2

第五行两个整数:resize 之后的 size(),以及 capacity() > size() 则为 1 否则 0

第六行两个整数:收缩之后的 size(),以及 capacity() == size() 则为 1 否则 0

每行元素之间一个空格,行末无多余空格。空货架输出空行。

样例

输入 #1

10
0 1 2 3 4 5 6 7 8 9
10
10 9 8 7 6 5 4 3 2 1
3

输出 #1

0 1 2 3 4 5 6 7 8 9
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
0 1 2 3 4 5 6 7 8 9
3 1
3 1

输入 #2

5
1 2 3 4 5
3
8 8 8
1

输出 #2

1 2 3 4 5
8 8 8
8 8 8
1 2 3 4 5
1 1
1 1

说明

\(1 \le k < n \le 1000\),\(1 \le m \le 1000\),元素绝对值不超过 \(10^9\)。

先尾插 \(n\) 个再 resize(k) 时,标准规定容量不会因截短而减小,因此容量一定严格大于大小。按匿名对象 swap 收缩后,容量应等于大小。

信息

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