온라인 쿼리 간격, 그것은 나무의 대통령 생각할 수있다
작은 거리를 찾는 제 k에 대해서는, 양자가 될 수
1 #INCLUDE <. 비트 / stdc ++ H> 2 #DEFINE 내용은 (ⅰ, A는 B)의 경우는 (INT 나는 A =; 나는 = B를을 <; ++ ⅰ) 3 #DEFINE 12월 (I, B, A)에 대한 ( I = B를을 int로, I> = A - I) 4 #DEFINE의 파일 () freopen을 ( "C : // 사용자 / ASUS / 데스크탑 / v.txt", "R", 표준 입력); 5 #DEFINE IO의 IOS :: sync_with_stdio (0) cin.tie (0) 6 #DEFINE의 INF 0x3f3f3f3f 7 이용한 스페이스 성병; 8 타입 정의 긴 긴 LL; 9 10 #DEFINE 미드 (L + R >> 1) 11 CONST의 INT N = 1000000 ; (12) INT S [N * (40) , LC [N * 40 , RC [N * 40 , RT [100010]이 [ 100010 ]; 13 INT의 N, m, 카세, CT; (14) 보이드 CLR ( INT 및 X, INT의 L, INT R) 15 { 16 개 (S) [X = CT ++] = 0 ; 17 의 경우 (L == R) 창 ; 18 CLR (LC [X], L, MID); CLR (RC [X], 중간 + 1 , R); 19 } 20 공극 UPD ( INT (X), INT 및 Y, INT의 L,INT의 R, INT P) 21 { 22 개 (S) [Y ++ = CT =에서 S [X] + 1 ; 23 의 경우 (L == R) 창 ; 24 일 경우 (p <= MID) RC [Y] =의 RC [X], UPD (LC [X] LC [Y], L, 중, P); 25 의 경우 (P> MID) LC [Y] = LC [X], UPD (RC [X], RC [Y], 중간 + 1 , R, P); 26 } 27 INT QRY ( INT (X), INT의 Y, INT의 L, INT의 R, INT의 L, INT R, INT 입술 = 0 ) 28 { 29 경우 (L <= 1 && R <= R) 창 S [Y] - S [X]; 30 의 경우 (L <= MID) 입술 + = QRY (LC [X] LC [Y], L, 중, L, R); 31 일 경우 (MID <R) 입술 + = QRY (RC [X], RC [Y], 중간 + 1 , R, L, R); 32 리턴 입술; 33 } 34 INT ) (주 35 { 36 IO; 37 // 파일 (); 38 CIN >> 카세; 39 동안 (kase-- ) 40 { 41 CIN >> >> N m; 42 CT = 0 ; 43 CLR (RT [ 0 ] (1) , N); 44 (I, 옵션 1 , N) CIN >> A [i]는, UPD (RT [I- 1 ], RT [I], 1 , N, A [I]); 45 INT X = 0 , Y는 = 0 , P, K, ANS = 0 ; 46 들어 (I, 1 , m) (47) { 48 CIN >> >> X, Y, P >> >> K; 49 X = X ^ ANS; Y = Y ^ ANS; p = P ^ ANS; K = K ^ ANS; 50 의 경우 (x> y)로 스왑 (X, Y); 51 INT를 L = 0 , R = N, MI; 52 동안 (L <= R) 53 { 54 MI = L + R >> 1 ; 55 의 경우 (QRY (RT [X- 1 ], RT [Y], 1 , N, P-MI, P + MI) <K), L = MI + 1 ; 56 다른 ANS = MI, mi- R = 1 ; 57 } 58 COUT << ANS << " \ n을 " ; 59 } 60 } 61 }
올해 지역 대회에서 재생할 수 없습니다 모른다, 좋은 음식을 느껴 ... _ (| 3 "∠) _