1の#include <iostreamの> 2の#include < ストリング > 3の#include <キュー> 4の#include <積層> 5の#include <ベクトル> 6の#include <地図> 7の#include <cstdioを> 8の#include <cstdlib> 9# <アルゴリズム>含む 10の#include < 設定 > 11の#include <iomanip> 12の#include <CStringの> 13の#include <cmath> 14の#include <限界> 15 使用 名前空間STDを、 16 17 の#define自己を持っています 18 の#defineデバッグ(I)COUT << "デバッグ:" << I << ENDL 19 の#define mfor(I、B)(iは=(A)がINTレジスタiが++; iが=(B)<)のため 20 の#define(I、B)(; I> =(B)i-- iは=(A)がINTレジスタ)のためMREP 21 の#define LLL __int128 22 の#define再登録 23 の#define ILインライン 24 の#defineを MEM(A、B)のmemset((B)はsizeof(A)) 25のtypedef対< INT、INT > intpair。 26 typedefの長い 長い int型のLL; 27 のconst int型 INF =0x3f3f3f3f ; 28 のconst int型 INFLL = 0x3f3f3f3f3f3f3f3f 。 29 30 INT N。 31 のconst int型 MAXN = 1000010 。 32 INT [MAXN]。 33 int型TR [MAXN]。 34 35インラインINT lowbit(INT X) 36 { 37 リターン X&( - X)。 38 } 39 40インラインボイドアップデータ(int型のx、int型K) 41 { 42 ながら(X <= N) 43 { 44 TR [X] + = K。 45 X + = lowbit(X)。 46 } 47 } 48 49インラインINT get_sum(INT X) 50 { 51 int型のRES = 0 。 52 一方(X> 0 ) 53 { 54の RES + = TR [X]。 55 X - = lowbit(X)。 56 } 57 リターンのres; 58 } 59 60 構造体クエリー 61 { 62 のint L、R。 63は int型のI; 64 ブール 演算子 < (クエリS) 65 { 66 リターン R < SR。 67 } 68 } Q [MAXN]。 69 70 のint M。 71 int型のマーク[MAXN]。 72 INTは[MAXN] ANS。 73 74 のint main()の 75 { 76 イオス:: sync_with_stdio(0 ); 77 cin.tie(0 )。 78 cout.tie(0 )。 79 CIN >> N。 80 mfor(I、1、n)がCIN >> [I]。 81 CIN >> M。 82 mfor(I、1 、m)の 83 { 84 CIN >> Q [i]は.L >> Q [i]は.R。 85 Q [i]は.I = I。 86 } 87 ソート(Q + 1、Q + 1 + M)。 88 int型 NXT = 1 ; 89 mfor(I、1 、m)の 90 { 91 mfor(J、NXT、Q [i]は.R) 92 { 93 であれば(マーク[J])アップデータ(マーク[J]、 - 1 ); 94 アップデータ(J、1 )。 95 マーク[J] = J。 96 } 97 NXT = Q [i]が.R + 1 。 98の ANS [Q [i]は.I] = get_sum(Q [i]が.R) - get_sum(Q [i]が.L - 1 )。 99 } 100 mfor(I、1、m)とCOUT << ANS [I] << ENDL。 101 戻り 0 ; 102 }