添字xの最初の数よりも大きいが要求間隔に等しいです。

int型のツリー[ 4 * N];
ボイドビルド(INT O、INT L、INT R){
     場合(L == R){CIN >>ツリー[O]。返す;} 
    (LS、L、中間)を構築します。
    構築(RS、ミッド + 1 、R); 
    ツリー[O] = MAX(ツリー[LS]、ツリー[RS])。
} 
INT  GETint型、O INTの L、INT R、INT X){
     場合(L == R)戻りL。
    リターン・ツリー[LS]> X?取得する(LS、L、MID、X):GET(RS、MID + 1 は、R、X); 
} 
int型クエリ(INT O、INT L、INT R&LT、INT QL、INT QR、INT X){ // クエリ[QL 、QR] xの位置の最初の数よりも大きい
    IF(QR <|| R&LT L <QL)リターン - 1。;
     IF(QL <= R&LT && L <= QR)を返すツリー[O]> X?GET( O、Lは、R、X): - 。1 ;
     INT T = クエリ(LS、L、MID、QL、QR、X);
     戻り!T = - 。1T:クエリ(RS、ミッド+ 1 、R、QL、QR、X)。
}

 

おすすめ

転載: www.cnblogs.com/zxz666/p/11402720.html