ch_POJ2182 잃어버린 소

펜윅 나무를 추구 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 ( 거짓 );
    주력 :: 해결 ();

}

 

추천

출처www.cnblogs.com/ling-zhi/p/11783002.html