Moのチームの水癌の質問
問題のどのような意味を理解するための言語のトピックや人々のハイレベル、
公共シーク間隔の発生回数は、(どのようながんトピック)
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 typedefの長い 長いLL。 const int型 MAXN = 5211314 ; INT [MAXN]、POS [MAXN]、[MAXN]、[MAXN] D sは INT [MAXN] CNT、LX、[MAXN] ANS、N、M。 INT 再(){ int型のx = 0、W = 1。チャー CH = GETCHAR()。 一方、(CH < ' 0 ' || CH> ' 9 '){ 場合(CH == ' - ' = W) - 1 ; CH =GETCHAR();} 一方(CH> = ' 0 ' && CH <= ' 9 ')、X = X * 10 + CH- ' 0 '、CH = )(GETCHAR。 リターンのx *のワット。 } 構造体クエリー{ int型のL、R、ID。 } Q [MAXN]。 BOOL CMP(クエリA、クエリB){ リターン(POS [ら] == POS [BL])?((POS [ら]&1)において、Ar <?BR:AR> BR):POS [アル] < POS [ BL]; } インラインボイド追加(INT X){ S [CNT [X]] ++] - ; S [CNT [X]]] ++; LX =MAX(LX、CNT [X]])。 } インラインボイドデル(INT X){ S [CNT [X]]] -。もし(CNT [X]] == LX && S [LX]!)LX - ; S [ - CNT [[X]]] ++ ; } int型のmain(){ N =再()、M = 再()。 INTのサイズ= SQRT(N)。 以下のために(int型 i = 1 ; iが<= N; iが++ ){ scanf関数(" %dを"&[I])。 D [i]は = [I]を、 POS [I] =(I - 1)/サイズ+ 1 。 } ソート(D + 1、D + N + 1)。INT LEN =一意の(D + 1、D + N + 1)-D- 1 。 以下のために(int型私= 1 ; iが<= N; iが++ ) [I] = LOWER_BOUND(D + 1、D + LEN + 1、[I]) - D。 用(int型 I = 1 ; I <= M Iは++ ){ Q [i]は.L =)(RE、Q [i]は.R = 再()。 Q [i]は.ID = iは、 } ソート(Q + 1、Q + M + 1、CMP)。 INTの R = 0、L = 1 。 用(int型 iは= 1 ; I <= M; iが++ ){ ながら(R <Q [i]は.R)(++追加登録商標); 一方、(R> Q [i]は.R)デル(r--の)。 一方、(L <Q [i]が.L)デル(L ++ )。 一方、(L> Q [i]は.L)を追加( - L)。 ANS [Q [i]は.ID] =のLX。 } のために(int型 I = 1 ; I <= M; iが++)のprintf(" %d個の\ nを"、 - ANS [I])。 }