diff --git "a/khj20006/202510/02 BOJ P2 \354\210\230\354\227\264\352\263\274 \354\277\274\353\246\254 5.md" "b/khj20006/202510/02 BOJ P2 \354\210\230\354\227\264\352\263\274 \354\277\274\353\246\254 5.md" new file mode 100644 index 00000000..9182eecb --- /dev/null +++ "b/khj20006/202510/02 BOJ P2 \354\210\230\354\227\264\352\263\274 \354\277\274\353\246\254 5.md" @@ -0,0 +1,40 @@ +```cpp +#include +using namespace std; + +int N, Q, k, a[100001]{}, b[100000]{}, c[1000001]{}; +vector> q; + +int main(){ + cin.tie(0)->sync_with_stdio(0); + + cin>>N; + k = sqrt(N); + for(int i=0;i>a[i]; + cin>>Q; + q.resize(Q); + int t = 0; + for(auto &[l,r,_]:q) { + cin>>l>>r; + _ = t++; + l--, r--; + } + sort(q.begin(), q.end(), [](auto x, auto y) -> bool { + auto [al, ar, ax] = x; + auto [bl, br, bx] = y; + if(al/k == bl/k) return ar < br; + return al/k < bl/k; + }); + + int l = 0, r = -1, s = 0; + for(auto [pl,pr,x]:q) { + while(r < pr) if(!c[a[++r]]++) s++; + while(pr < r) if(!--c[a[r--]]) s--; + while(l < pl) if(!--c[a[l++]]) s--; + while(pl < l) if(!c[a[--l]]++) s++; + b[x] = s; + } + for(int i=0;i