1つの#include <ビット/ STDC ++ H>
2 の#define Nmaxを50010
3
4 使用して 名前空間STDを、
5 INT [Nmax個]、TA [数Nmax]、CNT [数Nmax] = { 0 }。
6 INTのN、M、QN、K。
7 構造体QUE {
8 int型のL、R、P、ID。
9 ブール 演算子 <(CONSTの QUE&X)のconst { リターン(XP ==のP)(XR?> R):( XP> P)。}
10 } Q [数Nmax]。
11
12 INT メイン(){
13 のscanf("%D%D%D "&N、&QN、& K)、
14 のm =のSQRT(n)は、
15 のために(int型 i = 1 ; iが<= N; iが++)のscanf(" %dの」、および[I] );
16 のための(int型 I = 1 ; I <= QN; iが++ ){
17 のscanf(" %D%dの"、&Q [i]は.L&Q [I] .R);
18 Q [I]。 P =(Q [i]が.l- 1)/ M;
19 Q [i]は.ID = I;
20 }
21 ソート(Q + 1、Q + QN + 1 )。
22 INTは L = Q [ 1 ] .L、R = Q [ 1 ] .l- 1、ANS = 0 。
23 のために(int型 I = 1 ; <; I = QN iは++ ){
24 ながら、ANS + =( - (Q [i]が.L L L)> 2 *のCNT [[L] + 1)、CNT [ [L]] ++ ;
25 一方、(R <Q [i]の.R)R ++、ANS + =(2 * CNT [[R]] + 1)、CNT [[R]] ++ ;
26 一方(L <Q [i]が.L)ANS - =(2 * CNT [[L]] - 1)、CNT [L] - 、L ++ 。
27 一方、(R> Q [i]は.R)ANS - =(2 * CNT [[R]] - 1)、CNT [[R]] - 、r--の。
28 TA [Q [i]は.ID] =のANS。
29 }
30 のための(int型 I = 1 ; I <= QN; iは++)のprintf(" %Dを\ n " 、TA [I])。
31 リターン 0 ;
32 }