[bzoj1861][Zjoi2006]Book 书架
题目大意:有一串长度为$n$的序列,为$1\sim n$的一个排列,五个操作:
- $Top\;S:$把$S$放在序列开头
- $Bottom\;S:$把$S$放在序列结尾
- $Insert\;S\;T:$把$S$向后移动$T$个位置
- $Ask\;S:$询问$S$前有几个元素
- $Query\;S:$询问第$S$个元素是什么
题解:平衡树维护序列
卡点:无
C++ Code:
#include <cstdio>
#include <cstdlib>
#define maxn 80010
namespace Treap {
int P[maxn], sz[maxn];
int lc[maxn], rc[maxn], fa[maxn];
int root, idx;
int ta, tb, tmp, res, s;
inline int nw(int p) {
sz[p] = 1;
P[p] = rand();
