1127. C++ 语法练习之 vector

这道题目甚至比前面一道还要再无聊一些。

你需要维护一个序列,并实现下面的操作:

  • 操作 11:如果序列不为空删除序列最后一个数,否则保持序列不变。
  • 操作 22:给定一个数 ii,在序列末尾插入一个数 ii
  • 操作 33:输出序列的长度。
  • 操作 44:给定两个数 i,ji,j,将第 ii 个数的值设置为 jj,如果序列没有 ii 个数保持序列不变。
  • 操作 55:输出序列最后一个数的值,或者报告序列为空。
  • 操作 66:清空整个序列。

序列初始状态为空。

请注意本题输入量可能较大。

输入

输入包括若干行,每行对应一个操作,以 EOF 作为结束标志,保证操作的数量不超过 10610^6

对于任意一行,输入是下面三种情况的其中一种,其中 aa 是操作的序号:

  • 只包含一个整数 a (a=1,3,5,6)a \ (a=1,3,5,6),表示执行对应操作。
  • 包含两个用空格间隔的整数 a,i (a=2,1i105)a,i \ (a=2,1 \leq i \leq 10^5),表示执行操作 22
  • 包括三个用空格间隔的整数 a,i,j (a=4,1i,j105)a,i,j \ (a=4,1 \leq i,j \leq 10^5),表示执行操作 44

输出

若执行操作 1,2,4,61,2,4,6,你不需要输出任何东西。

若执行操作 3,53,5,每个操作输出一行:

  • 若执行操作 33,输出一个整数,表示答案。
  • 若执行操作 55,若序列为空输出 1-1,否则输出一个整数,表示答案。

样例

标准输入 复制文本
6
3
4 996 998
2 1
2 2
5
1
标准输出 复制文本
0
2
登录以提交代码。
单点时限 5 秒
内存限制 128 MB
提交 392
通过 116