#SDNU1712. [模板题]-二逼平衡树

    ID: 475 Type: Default 4000ms 512MiB Tried: 1 Accepted: 1 Difficulty: 10 Uploaded By: Tags>数据结构平衡树树套树模板

[模板题]-二逼平衡树

Description

这是一道模板题。

您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:

查询 xx 在区间内的排名; 查询区间内排名为 kk 的值; 修改某一位置上的数值; 查询 xx 在区间内的前驱(前驱定义为小于 xx,且最大的数); 查询 xx 在区间内的后继(后继定义为大于 xx,且最小的数)。

Format

Input

第一行两个数 n,mn, m,表示长度为 nn 的有序序列和 mm 个操作。 第二行有 nn 个数,表示有序序列 aia_i

下面有 mm 行,每行第一个数表示操作类型:

  1. 之后有三个数 l,r,xl, r, x 表示查询 xx 在区间 [l,r][l, r] 的排名;
  2. 之后有三个数 l,r,kl, r, k 表示查询区间 [l,r][l, r] 内排名为 kk 的数;
  3. 之后有两个数 pos\mathrm{pos}, yy 表示将 pos\mathrm{pos} 位置的数修改为 yy
  4. 之后有三个数 l,r,xl, r, x 表示查询区间 [l,r][l, r]xx 的前驱;
  5. 之后有三个数 l,r,xl, r, x 表示查询区间 [l,r][l, r]xx 的后继。

Output

对于操作 1,2,4,51, 2, 4, 5 各输出一行,表示查询结果。

Samples

9 6
4 2 2 1 9 4 0 1 1
2 1 4 3
3 4 10
2 1 4 3
1 2 5 9
4 3 9 5
5 2 8 5
2
4
3
4
9

Limitation

1n,m5×1041 \leq n, m \leq 5 \times 10 ^ 4

0ai,y1080\le a_i,y\le 10^8

1lrn1\le l\le r\le n

1posn1\le \mathrm{pos}\le n

1krl+11\le k\le r-l+1

108x108-10^8\le x\le 10^8

保证 xx 存在前驱和后继