小T的书架
时间限制:1秒 内存限制:256M
【题目描述】
小 T 有一个很大的书柜。书柜里的书是从上至下堆放成一列。用 1 到 \(n\) 的正整数给每本书都编号。她每次取出一本书,看完后放回书柜然后再拿下一本。她看完后常常会忘记原来是放在书柜的什么位置。不过小T的记忆力是非常好的,所以每次放书的时候至少能够将那本书放在拿出来时的位置附近,比如说她拿的时候这本书上面有 \(X\) 本书,那么放回去时这本书上面就只可能有 \(X-1\)、\(X\) 或 \(X+1\) 本书。 当然有紧急事情时小 T 会随手把书放在书柜里所有书的最上面或者最下面,然后转身离开。
久而久之,书柜里的书的顺序就会越来越乱,于是她想请你帮她编写一个图书管理程序,回答她的两个提问:
(1)编号为 \(X\) 的书在书柜的什么位置?
(2)从上到下第 \(i\) 本书的编号是多少?
【输入格式】
第一行有两个数 \(n,m\),分别表示书的个数以及命令的条数;
第二行为 \(n\) 个正整数:第 \(i\) 个数表示初始时从上至下第 \(i\) 个位置放置的书的编号;
第三行到 \(m+2\) 行,每行一条命令。命令有5种形式:
Top \(S\) 表示把编号为 \(S\) 的书房在最上面。
Bottom \(S\) 表示把编号为 \(S\) 的书房在最下面。
Insert \(S\ T\) 若编号为\(S\)的书上面有\(X\)本书,则这条命令把这本书放回去后它的上面有\(X+T\)本书\((-1≤T≤1)\);
Ask \(S\) 询问编号为 \(S\) 的书的上面有多少本书。
Query \(S\) 询问从上面数起的第 \(S\) 本书的编号。
【输出格式】
对于每一条 Ask 或 Query 语句你应该输出一行,一个数,代表询问的答案。
【输入输出样例】
Input
10 10
1 3 2 7 5 8 10 4 9 6
Query 3
Top 5
Ask 6
Bottom 3
Ask 3
Top 6
Insert 4 1
Query 5
Query 2
Ask 2
Output
2
9
9
7
5
3
【数据限制】
对于 \(100\%\) 的数据,\(n,m≤80000\)
【来源】
Mr.he**