天天看點

P3380 【模闆】二逼平衡樹(樹套樹) 線段樹套平衡樹

您需要寫一種資料結構(可參考題目标題),來維護一個有序數列,其中需要提供以下操作:

查詢k在區間内的排名

查詢區間内排名為k的值

修改某一位值上的數值

查詢k在區間内的前驅(前驅定義為嚴格小于x,且最大的數,若不存在輸出-2147483647)

查詢k在區間内的後繼(後繼定義為嚴格大于x,且最小的數,若不存在輸出2147483647)

第一行兩個數 n,m 表示長度為n的有序序列和m個操作

第二行有n個數,表示有序序列

下面有m行,opt表示操作标号

若opt=1 則為操作1,之後有三個數l,r,k 表示查詢k在區間[l,r]的排名

若opt=2 則為操作2,之後有三個數l,r,k 表示查詢區間[l,r]内排名為k的數

若opt=3 則為操作3,之後有兩個數pos,k 表示将pos位置的數修改為k

若opt=4 則為操作4,之後有三個數l,r,k 表示查詢區間[l,r]内k的前驅

若opt=5 則為操作5,之後有三個數l,r,k 表示查詢區間[l,r]内k的後繼

對于操作1,2,4,5各輸出一行,表示查詢結果

時空限制:2s,128M

\(n,m \leq 5\cdot {10}^4\)保證有序序列所有值在任何時刻滿足 \([0, {10} ^8]\)

----olinr