#P14005. 线性表操作

线性表操作

题目背景

线性表是若干数据元素的序列,线性表中元素的数量称为线性表的长度,一般情况下,称首元素为第 00 个元素,然后是第 11 个元素,第 22 个元素……。

题目描述

对于元素是整数的空线性表,针对提供的一系列线性表操作指令,依次输出所有操作指令执行完毕后线性表中的元素。

输入格式

第一行是一个正整数 nn,表示指令的数量,接下来有 nn 行,每行是一条指令,指令有如下多种格式:

  • init s v\verb|init s v| :将线性表初始化(或者重置)为有 s\verb|s| 个值均为 v\verb|v| 的元素的线性表;
  • clear\verb|clear| :清空(删除)线性表中的所有元素;
  • set p v\verb|set p v| :设置线性表第 p\verb|p| 个元素的值为 v\verb|v|;如果线性表不存在第 p\verb|p| 个元素,那就将线性表扩展到长度为 p+1\verb|p+1|,再设置第 p\verb|p| 个元素的值为 v\verb|v|,扩展过程中新添加的元素均为 00
  • push v\verb|push v| :将值为 v\verb|v| 的元素添加到线性表的末尾;
  • pushs s v\verb|pushs s v| :在线性表的末尾添加 s\verb|s| 个值均为 v\verb|v| 的元素;
  • pop\verb|pop| :删除线性表末尾的元素;如果线性表为空,则不执行任何操作;
  • insert p v\verb|insert p v| :在线性表第 p\verb|p| 个元素前插入值为 v\verb|v| 的新元素;如果线性表不存在第 p\verb|p| 个元素,那就将线性表扩展到长度为 p+1\verb|p+1|,再在第 p\verb|p| 个元素前插入值为 v\verb|v| 的新元素,扩展过程中新添加的元素均为 00
  • inserts p s v\verb|inserts p s v| :在线性表第 p\verb|p| 个元素前插入 s\verb|s| 个值均为 v\verb|v| 的新元素;如果线性表不存在第 p\verb|p| 个元素,那就将线性表扩展到长度为 p+1\verb|p+1|,再在第 p\verb|p| 个元素前插入 s\verb|s| 个值均为 v\verb|v| 的新元素,扩展过程中新添加的元素均为 00
  • erase p\verb|erase p| :删除线性表中的第 p\verb|p| 个元素;如果线性表中不存在第 p\verb|p| 个元素,则不执行任何操作;
  • erases from to\verb|erases from to| :删除线性表中的第 from~to\verb|from~to| 的所有元素,包括第 from\verb|from| 和第 to\verb|to| 这两个元素;如果线性表不存在这个区间中的某个元素,则不执行删除该元素的操作;
  • resize s\verb|resize s| :将线性表的长度设置为 s\verb|s|。如果线性表当前长度大于 s\verb|s| ,那么本操作的效果是将线性表截断到长度为 s\verb|s|;如果线性表当前长度小于 s\verb|s| ,那么本操作的效果是将线性表扩展到长度为 s\verb|s|,扩展过程中新添加的元素均为 00
  • sort asc\verb|sort asc| :将线性表中的元素升序排序;
  • sort desc\verb|sort desc| :将线性表中的元素降序排序;

输出格式

输出有 22 行,第一行是所有指令执行完毕后线性表的长度;第二行是所有指令执行完毕后线性表的所有元素的值,任意数据之间用一个空格隔开。

输入输出样例

13
init 2 10
clear
set 4 2
push 100
pushs 3 20
pop
insert 5 30
inserts 10 5 7
erase 9
erases 12 100
resize 10
erases 1 3
sort asc
7
0 2 7 20 20 30 100

说明/提示

对于输入样例,每条指令执行后线性表中的元素情况如下:

执行的指令 执行指令后线性表中的元素
init 2 10\verb|init 2 10| 10 10\verb|10 10|
clear\verb|clear|
set 4 2\verb|set 4 2| 0 0 0 0 2\verb|0 0 0 0 2|
push 100\verb|push 100| 0 0 0 0 2 100\verb|0 0 0 0 2 100|
pushs 3 20\verb|pushs 3 20| 0 0 0 0 2 100 20 20 20\verb|0 0 0 0 2 100 20 20 20|
pop\verb|pop| 0 0 0 0 2 100 20 20\verb|0 0 0 0 2 100 20 20|
insert 5 30\verb|insert 5 30| 0 0 0 0 2 30 100 20 20\verb|0 0 0 0 2 30 100 20 20|
inserts 10 5 7\verb|inserts 10 5 7| 0 0 0 0 2 30 100 20 20 0 7 7 7 7 7 0\verb|0 0 0 0 2 30 100 20 20 0 7 7 7 7 7 0|
erase 9\verb|erase 9| 0 0 0 0 2 30 100 20 20 7 7 7 7 7 0\verb|0 0 0 0 2 30 100 20 20 7 7 7 7 7 0|
erases 12 100\verb|erases 12 100| 0 0 0 0 2 30 100 20 20 7 7 7\verb|0 0 0 0 2 30 100 20 20 7 7 7|
resize 10\verb|resize 10| 0 0 0 0 2 30 100 20 20 7\verb|0 0 0 0 2 30 100 20 20 7|
erases 1 3\verb|erases 1 3| 0 2 30 100 20 20 7\verb|0 2 30 100 20 20 7|
sort asc\verb|sort asc| 0 2 7 20 20 30 100 \verb|0 2 7 20 20 30 100 |

👀️ 对于100%100\% 的数据 $1 \leq n \leq 10000, 0 \leq \verb|s,v,p,from,to| \leq 10000$。