/ Vijos / 题库 /

小T的书架

小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**

信息

ID
2665
难度
9
分类
数据结构 | 平衡树 点击显示
标签
递交数
11
已通过
1
通过率
9%
被复制
4
上传者