From 3c54f2394149a6b42d22dd8d386330467d54e39f Mon Sep 17 00:00:00 2001 From: oncsr Date: Thu, 16 Oct 2025 22:10:28 +0900 Subject: [PATCH] =?UTF-8?q?[20251016]=20BOJ=20/=20P1=20/=20=EC=88=98?= =?UTF-8?q?=EC=97=B4=EA=B3=BC=20=EC=BF=BC=EB=A6=AC=2023=20/=20=EA=B6=8C?= =?UTF-8?q?=ED=98=81=EC=A4=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...52\263\274 \354\277\274\353\246\254 23.md" | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 "khj20006/202510/16 BOJ P1 \354\210\230\354\227\264\352\263\274 \354\277\274\353\246\254 23.md" diff --git "a/khj20006/202510/16 BOJ P1 \354\210\230\354\227\264\352\263\274 \354\277\274\353\246\254 23.md" "b/khj20006/202510/16 BOJ P1 \354\210\230\354\227\264\352\263\274 \354\277\274\353\246\254 23.md" new file mode 100644 index 00000000..47ec3eb0 --- /dev/null +++ "b/khj20006/202510/16 BOJ P1 \354\210\230\354\227\264\352\263\274 \354\277\274\353\246\254 23.md" @@ -0,0 +1,65 @@ +```cpp +#include +using namespace std; +using ll = long long; + +int N, Q, a[100000]{}, sq; +ll fen[100001]{}, ans[100000]{}; +map m; +vector> qs; + +void upt(int i, int v) { + for(;i<100001;i+=i&-i) fen[i] += v; +} + +ll f(int i) { + ll ret = 0; + for(;i>0;i-=i&-i) ret += fen[i]; + return ret; +} + +int main(){ + cin.tie(0)->sync_with_stdio(0); + + cin>>N>>Q; + sq = sqrt(N); + for(int i=0;i>a[i], m[a[i]] = 0; + int c = 0; + for(auto &[x,y]:m) y = ++c; + for(int i=0;i>a>>b, a--, b--, x = t++; + sort(qs.begin(), qs.end(), [](auto a, auto b) -> bool { + auto [al, ar, ax] = a; + auto [bl, br, bx] = b; + if(al/sq == bl/sq) return ar < br; + return al/sq < bl/sq; + }); + + int l = 0, r = -1; + ll res = 0; + for(auto [pl,pr,x]:qs) { + while(r < pr) { + res += f(c) - f(a[++r]); + upt(a[r],1); + } + while(pr < r) { + res -= f(c) - f(a[r]); + upt(a[r--],-1); + } + while(l < pl) { + res -= f(a[l]-1); + upt(a[l++],-1); + } + while(pl < l) { + res += f(a[--l]-1); + upt(a[l],1); + } + ans[x] = res; + } + for(int i=0;i