HM200 货架插删

HM200 货架插删

HM200 货架插删

来源: 第 200 集 vector容器-插入和删除

难度: 普及-

时间限制: 1s

空间限制: 64MB

题目描述

动态数组在尾部做快速装卸,也可以把迭代器放到指定偏移处插入或删除。inserterase 的位置参数必须是迭代器,**不能把 \(0,1,2\) 这种整数下标直接传进去**。

常用操作如下:

  • push_back(x):尾插。
  • pop_back():尾删。
  • insert(begin()+p, x):在偏移 \(p\) 处插入一个 \(x\)。
  • insert(begin()+p, k, x):在偏移 \(p\) 处连续插入 \(k\) 个相同的 \(x\)(重载版本)。
  • erase(begin()+p):删掉偏移 \(p\) 处的一个元素。
  • erase(begin()+L, begin()+R):删掉半开区间 \([L,R)\)。若区间正好是 \([0,\textit{size})\),效果等同于清空。
  • clear():专门用来清空整座货架。对整段做区间 eraseclear 效果相同,但接口不同。

先把输入序列依次尾插入,输出一次当前货架;再执行 \(q\) 条指令,**每条指令执行后再输出一次**。打印使用迭代器。

输入格式

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

第二行 \(n\) 个整数 \(a_i\),依次 push_back

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

接下来 \(q\) 行,每行一条指令:

  • 1 x:尾插 \(x\)
  • 2:尾删(保证货架非空)
  • 3 p x:在偏移 \(p\) 插入一个 \(x\)(\(0 \le p \le\) 当前大小)
  • 4 p k x:在偏移 \(p\) 插入 \(k\) 个 \(x\)
  • 5 p:删除偏移 \(p\) 处的元素(\(0 \le p <\) 当前大小)
  • 6 L R:删除半开区间 \([L,R)\)(\(0 \le L \le R \le\) 当前大小)
  • 7:清空

输出格式

共 \(q+1\) 行。先输出初始货架,再按指令顺序各输出一次。每行用单个空格分隔全部整数,行末无多余空格。空货架输出空行。

样例

输入 #1

5
10 20 30 40 50
6
2
3 0 100
4 0 2 1000
5 0
6 0 6
7

输出 #1

10 20 30 40 50
10 20 30 40
100 10 20 30 40
1000 1000 100 10 20 30 40
1000 100 10 20 30 40

输入 #2

4
1 2 3 4
3
5 1
6 1 3
1 9

输出 #2

1 2 3 4
1 3 4
1
1 9

说明

\(0 \le n \le 1000\),\(1 \le q \le 200\),\(0 \le k \le 100\),所有元素绝对值不超过 \(10^9\)。保证每条指令合法,不会对空货架尾删,也不会给出越界偏移。

样例 #1 对应「尾插一组数 → 尾删 → 头部插一个 → 头部插两个相同值 → 删掉起始位置 → 按 \([0,\textit{size})\) 清空 → 再 clear」。空货架再打印只会多出一个换行。

信息

ID
1199
难度
9
分类
(无)
标签
(无)
递交数
2
已通过
1
通过率
50%
上传者