えーえーえー。。2のための再生時間を倍にすることは、長い抗バグのチェックを書きました。。。
我々は、最初の行は無駄を除去し、各セグメントについて、次に乗算十分ヒット下部との接触の最大の一つとしてRを発見しています。
#include <ビット/ STDC ++。H> の#defineは LL長い長 の#define LD長い二 の#define ULL符号なし長い長 の#define第Fiの に#define SE第二 の#define MK make_pair の#define PLL対<LL、LL> の#define PLI対<LL、整数> の#define PII対<整数、整数> の#define SZ(X)((INT)x.size()) の#define ALL(X)(X).begin()、(X).END( ) の#define FIOイオス:: sync_with_stdio(偽); cin.tie(0)。使用して名前空間はstdを、CONSTのINT N = 5E5 + 7 。 const int型 INF = 0x3f3f3f3f 。 constの LL INF = 0x3f3f3f3f3f3f3f3f 。 const int型のmod = 998244353 ; constの ダブル EPS = 1E- 8 ; CONST ダブル PI = ACOS( - 1 )。 テンプレート < クラス T、クラス S>インラインボイド追加(T&、S b)は{A + B =。もし(A> = MOD)A - = MOD;} テンプレート < クラス T、クラス S>インラインボイドサブ(T&、S b)は、{ - = B。もし(<0)、A + = MOD;} テンプレート < クラス T、クラス S>インラインBOOL chkmax(T&、S B)は{ 返す <bは?= B、真:偽;} テンプレート < クラス T、クラス S>インラインブール chkmin(T&、S b)は{ 返す > bは?= B、真:偽;} int型N、M、[N] C。 int型の接頭辞[N]; INT NEX [N] [ 20 ]。 構造体のライン{ int型のL、R。 BOOL 演算子 <(constのラインアンドRHS)のconst { 場合(L == rhs.l)戻り R> rhs.r。 リターンリットル< rhs.l。 } } [N]。 INT メイン(){ scanf関数(" %d個の%のD "、&N、&M)。 以下のために(int型 i = 1 ; iが<= N; iは++)scanf関数を(" %d個の%のD "、および[I] .L、&[I] .R)、[I] .r-- 。 ソート( + 1、A + 1個の + N)。 INT NN = N。N =1 ; 以下のために(int型 I = 2 ; I <= NN; iは++ ) 場合([I] .R> [N] .R)++、nは] = [I]。 以下のために(int型 i = 1 ; iが<= N; iは++ ){ C [I] .L] ++ ; C [I] .R + 1 ] - 。 } もし(!C [ 0 ])の接頭辞[ 0 ] = 1 。 以下のために(int型 i = 1 ; iは= < 500000 ; I ++ ){ C [I]+ = C [I - 1 ]。 もし(!C [i])と接頭辞[I] = 1 ; 接頭辞[I] + =接頭辞[I - 1 ]。 } のための(int型 I = 1、J = 2 ; iが++; iが<= N ){ J = MAX(I + 1 、J)。 一方、(j <= N && [J] .L <= [I] .R + 1)J ++ 。 NEX [i]が[ 0 - ] J = 1、私は==を?0:J - 1 。 } のための(INT J = 1; J < 20 ; J ++ ) のために(int型 I = 1は iが++; iがn = <; ) NEX [I] [J] = NEX [ - NEX [I]、[J 1 ] [jは- 1 ]。 一方、(M-- ){ int型 X、Y。scanf関数(" %dの%のD "、およびX&Y)。 Y - 。 INT CNT = 接頭辞[Y]。 もし =プレフィックス- (X)CNT [X - 1 ]。 もし(CNT){ プット(" -1 " )。 } 他{ INT P = LOWER_BOUND(A + 1、A + 1 + nは、行{X + 1、INF}) - - 1 。 もし(> = [P] .R Y){ プット(" 1 " )。 } 他{ int型 ANS = 0 。 以下のために(int型 iは= 19、I> = 0 ; i-- ){ 場合(NEX [P] [I] && [NEX [P] [I] R < Y){ P = NEX [P] [i]は、 ANS + =(1 << I)。 } } のprintf(" %d個の\ n "、ANS + 2 )。 } } } 戻り 0 。 }