orazma

a.cpp

Apr 2nd, 2026
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define f first
  4. #define s second
  5. using ll = long long;
  6. const int MOD = 998244353;
  7. const int MAXN = 2e5 + 10;
  8.  
  9. pair <pair <int, int>, pair <int, int> > b[MAXN];
  10. int a[MAXN], k, cnt[MAXN], ans[MAXN];
  11.  
  12. void add(int x){
  13.     cnt[x]++;
  14.     if (cnt[x] == 1){
  15.         k++;
  16.     }
  17. }
  18.  
  19.  
  20. void del(int x){
  21.     cnt[x]--;
  22.     if (cnt[x] == 0){
  23.         k--;
  24.     }
  25. }
  26.  
  27. void solve() {
  28.  
  29.     int n, q;
  30.     cin >> n >> q;
  31.     for (int i = 0; i < n; i++){
  32.         cin >> a[i];
  33.     }
  34.     int len = sqrt(n);
  35.     for (int i = 0; i < q; i++){
  36.         int l, r;
  37.         cin >> l >> r;
  38.         l--;
  39.         r--;
  40.         b[i].f.f = l / len;
  41.         b[i].f.s = r;
  42.         b[i].s.f = l;
  43.         b[i].s.s = i;
  44.     }
  45.  
  46.     sort (b, b + q);
  47.  
  48.     int left = 0;
  49.     int right = -1;
  50.     k = 0;
  51.  
  52.     for (int i = 0; i < q; i++){
  53.  
  54.         while (right < b[i].f.s){
  55.             right++;
  56.             add(a[right]);
  57.         }
  58.         while (left > b[i].s.f){
  59.             left--;
  60.             add(a[left]);
  61.         }
  62.         while (right > b[i].f.s){
  63.             del(a[right]);
  64.             right--;
  65.         }
  66.         while(left < b[i].s.f){
  67.             del(a[left]);
  68.             left++;
  69.         }
  70.         ans[b[i].s.s] = k;
  71.     }
  72.  
  73.     for (int i = 0; i < q; i++){
  74.         cout << ans[i] << '\n';
  75.     }
  76.  
  77. }
  78.  
  79. int main(){
  80.     std::ios::sync_with_stdio(false);
  81.     std::cin.tie(nullptr); std::cout.tie(nullptr);
  82.     int t = 1;
  83.     //cin >> t;
  84.     while (t--) {
  85.         solve();
  86.     }
  87. }
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
Advertisement
Add Comment
Please, Sign In to add comment