要求维护一个数列,支持以下5种操作:
在数列末尾增加一个数
在数列开头增加一个数
输出数列开头的数据并把这个数据删除
删除数列中从前往后第一次出现的某一个数
输出数列中数的个数
最开始数列为空,保证数的范围在[$0, 10^5$]
具体意思请结合样例理解
第一行一个$m(m <= 10^6)$,表示要进行操作的数目。
接下来$m$行,每行的第一个数$op$为操作的编号
如果op为1,2,4,这行会有第二个数$x$,表示要被增加或者被删除的数字
如果op为3,5,不会有第二个数字
输出若干行 当op为1,2时,不输出
当op为3时,如果数列为空输出error(此时不操作数列),否则输出数列的第一个数
当op为4时,如果数列中没有x输出error(此时不操作数列),否则不输出
当op为5时,输出数列中数的个数
最后一行按顺序从前往后输出最终的数列(为空输出null)
8
1 1
2 2
1 2
5
4 2
4 2
4 2
3
3
error
1
null
给出数列的变化
[] $\rightarrow$ [1] $\rightarrow$ [2, 1] $\rightarrow$ [2, 1, 2] $\rightarrow$ [1, 2] $\rightarrow$ [1] $\rightarrow$ []
4
1 1
2 2
2 3
2 4
4 3 2 1
[] $\rightarrow$ [1] $\rightarrow$ [2, 1] $\rightarrow$ [3, 2, 1] $\rightarrow$ [4, 3, 2, 1]
对于第1, 2, 3组数据, m <= 1000,共30分
对于第4, 5, 6组数据,m <= 1000000, 没有4操作,共70分
这个题在m = 1000000且有操作4的时候也是可以做的,这里留给有兴趣的同学思考,也欢迎与出题人讨论