할아버지의 제목 문자열

 모 팀 암 질문

언어 항목과 사람, 높은 수준의 문제가 어떤 의미를 이해하기

공공 추구 간격의 발생 수는 (어떤 암 주제)

#INCLUDE <비트 / stdc ++ H.>
 사용  스페이스 성병; 
타입 정의  LL;
CONST의  INT의 maxn = 5,211,314 ;
int로 A [maxn, POS를 [maxn] 님의 [maxn], D [maxn];
INT CNT는 [maxn]는 [maxn, LX, N, m을 ans와;
INT 재 () {
     INT X = 0 , w = 1 ;  CH = getchar가 ();
    동안 (CH2 < ' 0 ' || CH> ' 9 ' ) { 경우 (CH2 == ' - ' ) w = - 1 ; CH =getchar가 ();}
     동안 (CH2> = ' 0 ' && CH <= ' 9 ' ) (X) = (X) * 10 + CH- ' 0 ' , = CH ) (getchar가;
    반환 의 X *의 w 단계; 
} 
구조체 쿼리 {
     INT의 L, R, ID; 
} Q [maxn]; 
부울 CMP (a 쿼리 B 조회) {
      (POS [알] == POS [BL]) ((POS [알 &? 1 ) AR <BR : AR>? BR) : POS [알] < POS [ BL]; 
} 
인라인 공극 추가 ( INT X) { 
    S [CNT [A [X] ++] -, (S) [CNT [A [X]] ++; LX =맥스 (LX, CNT [A [X]); 
} 
인라인 공극 델 ( INT X) { 
    S [CNT [A [X]] -; 경우 (CNT [A [X] == LX && S [LX]!) LX -; S [- CNT [A [X]] ++ ; 
} 
INT 의 main () { 
    N = 재 (), m = 재 (); 
    INT의 크기 = SQRT (N); 
    위한 ( int로 I = 1 ; 나는 <= N; I ++는 ) { 
        는 scanf ( " %의 D를 " , & A [I]); 
        d는 [내가] = A [I]; 
        POS [I]는 = (I - 1 ) / 사이즈 + 1  ;
    } 
    정렬 (d + 1 , N + D + 1 ); INT LEN 고유 = (d + 1 , N + D + 1 ) -D- 1 ; 
    위한 ( int로 I = 1 난 ++; 나는 <= N ) 
        A [내가] = LOWER_BOUND (d + 1 , D + LEN + 1 , A [I]) - (D) 단계;
    위한 ( int로 I = 1 ; I <= m 내가 ++ ) { 
        Q [I] 펜닐 = 재 ()를 Q [I] = .R 재 (); 
        Q [I] .ID = 난; 
    } 
    정렬 (Q + 1 , Q + m +1 , CMP);
    INT의 R = 0 , L = 1 ;
    위한 ( int로 난 = 1 ; i가 <m = 내가 ++ ) {
         동안 (R은 <Q [I]를 .R) (++ 추가 R);
        반면 (R> Q [I] .R) 델 (r-- 사용 );
        반면 (L <Q [I] 펜닐) 델 (L ++ );
        반면 (L> Q [I] 펜닐) 추가 (- L); 
        ANS [Q [I]는 .ID] =의 LX; 
    } 
    에 대해 ( int로 I = 1 의 printf (; I <= m 내가 ++) " 가 % d \ 없음 " - ; ANS [I]를) 
}

 

추천

출처www.cnblogs.com/wilxx/p/11697524.html