펜윅 나무를 추구 k 번째로 큰 수를 사용하여
콘크리트 101010101010 표시되어 ........
숫자 1은 접두사 세어
사용법 #include <iostream> #INCLUDE <cstdio> #DEFINE는 INT 레지스터 RI #DEFINE U 긴 긴 네임 스페이스 옵트 { U 인라인 에서 () { UX ( 0 ), F ( 1 ); 문자 S (getchar가 ()); 반면 (S < ' 0 ' || S> ' 9 ' ) { 경우 (S == ' - ' ) F = - 1 ; S = getchar가 (); } 반면 (S> = ' 0 ' && S <= ' 9 ' ) { X = (X << 1 ) + (X << 3 ) + S- ' 0 ' ; S = getchar가 (); } 반환 의 X *의 F 단계; } } 사용 옵트을 :: 에 ; #DEFINE NN 200005 #INCLUDE <CString을> 네임 스페이스 의지 { U N, K; UC [NN], 군사 [NN]에서 [NN] u는 ASK (인라인 CONST U & {X) 유 (_re 0 ); 대 (RI I (X) 나, I- = 1 & -i) _re + = C [I]; 반환 _re을; } 인라인 공극 추가 ( CONST U 및 X, CONST U 및 Y) { 위해 RI (I (x)는, 전 = <N; I + = 난 및 -i) C [내가] + = Y; } 인라인 공극 해결 () { N = 에서 (); 위한 (RI 난 ( 2 ) 내가 = <N; ++ ⅰ) [I] = 에서 (); 위한 (RI 제가 ( 1 ) 내가 = <N; ++ I) 추가 (I, 1 ); 대 (RI I (N) I> = 1 - I) { UL (a [I]는 + 1 ), R (N), 미드 ans1; 반면 (L <= R) { 중간 = (L +의 연구 >> 1 ); 경우 (질문은 (중간)>는 [내가] + = 1 , R = 미드) 1 , ans1 = 미드; 또 , L = 중간 + 1 ; } ANS [I]는 = ans1의은 (ans1을 - 추가 1 ); } 위한 (RI 제가 ( 1 ) 내가 <= N; ++ I)의 printf ( " % D \ 없음 " , ANS [I]); } } 값 int () {메인 // freopen을 ( "x.txt", "R", 표준 입력) 표준 : IOS :: sync_with_stdio ( 거짓 ); 주력 :: 해결 (); }