Advertisement
ke_timofeeva7

Мо

Nov 4th, 2022 (edited)
595
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.42 KB | None | 0 0
  1. /*
  2. ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀       ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀           ⢀⣠⡯⠀⠀⠀⢠⡐⠀⠀⠀⠀⠀
  3. ⠀⠀⠀⢀⣤⠔⠂⠀⠀⠀⢤⣤⣤⣤⣄⣀⣀⣀⣀⡀⠀⢀⣀⣀⣀⡀⠀⠀⠀⢀⢀⣀⣠⣤⣴⣶⣾⠉⠉⠙⣶⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀   ⠀⣰⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀
  4. ⠀⠀⠰⣿⣷⣾⣿⣷⣴⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠉⠛⢿⣿⣿⣿⣿⣿⣿⣿⠿⠿⣿⣶⣿⣿⣿⣿⣤⣂⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣤⣤⣤⣴⣦⣾⣿⣿⣿⣶⣦⣴⣶⣶⠀
  5. ⠀⠀⠀⣿⣿⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣤⣶⣶⣿⣿⣿⣿⣿⣿⣿⣯⣤⣤⣿⡿⠿⠿⠿⠛⠛⠛⠛⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣽⣿⣿⡟⢻⣿⣿⣿⡟⣿⣿⣿⣿⠉⠉⠁⠀
  6. ⠀⠀⠀⣹⣟⣿⣦⠈⠻⠋⢉⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣠⣾⣿⣿⣏⣤⣾⣿⣿⣿⡆⠀
  7. ⠀⠀⢀⣿⣿⣿⣿⣦⠀⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠟⢿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡧⠀
  8. ⠀⠀⢸⣿⣿⣿⣿⣿⡀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡈⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⡄⠀
  9. ⠀⠀⠈⠿⠿⠁⣿⣿⣿⠎⠻⣯⠉⠉⠉⠈⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⢹⣿⢻⠉⠉⠁⠈⠻⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠁⠉⠙⠛⠛⢿⣿⠟⠋⠁⠀⠀⠀⠈⠀
  10. ⠀⠀⠀⠀⠀⠀⢹⣿⡟⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⠞⠀⠀⠀⠀⠀⠀⠙⠳⠤⠤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀    ⠀⠀⠀⠁⠀⠀⠀⠀⠀⠸⣿⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⠀
  11. ⠀⠀⠀⠀⠀⠀⢈⡟⠇⠀⠀⠀⠀⠈⠁⠤⠤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣶⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀     ⠀⠀⠀⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
  12. ⠀⠀⠀⠀⠀⠀⠀⠙⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⠂⠀⠀⠀⠀  ⠀⠀⠀⠀⠀⠀⠀⠀                             ⠀⠀⡘⡀⠀
  13.                                          ⠀⠀⠀⠀⠀⠀                         ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
  14. */
  15. #include <iostream>
  16. #include <string>
  17. #include <sstream>
  18. #include <cmath>
  19. #include <memory.h>
  20. #include <algorithm>
  21. #include <stack>
  22. #include <deque>
  23. #include <iomanip>
  24. #include <stdio.h>
  25. #include <queue>
  26. #include <map>
  27. #include <set>
  28. #include <unordered_map>
  29. #include <unordered_set>
  30. #include <random>
  31. #include <ctime>
  32. #include <cstdlib>
  33. #include <cassert>
  34. #include <iterator>
  35. #include <chrono>
  36. #include <array>
  37. #define int long long
  38. #define intt __int128
  39. #define pii pair <int, int>
  40. #define debug(x) cerr << (#x) << " " << (x) << endl
  41. #define pb push_back
  42. #define all(vc) vc.begin(), vc.end()
  43. #define fir first
  44. #define sec second
  45. #define endl "\n"
  46. #define un unsigned
  47. #define INF 1000000009
  48. #define double long double
  49. using namespace std;
  50.  
  51. const int N = 300001, R = 1 << 20, MOD = 1e9 + 7, ABC = 26, logn = 19;
  52. const int BUBEN = 550;
  53.  
  54. mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
  55.  
  56. struct S {
  57.     int first, second, idx;
  58.  
  59.     S(int a, int b, int c) : first(a), sec(b), idx(c) { }
  60.     S() {}
  61. };
  62.  
  63. bool cmp(S a, S b) {
  64.     if (a.fir / BUBEN == b.first / BUBEN)
  65.         return a.second < b.second;
  66.     return a.fir < b.fir;
  67. }
  68.  
  69. vector<int> cnt(N);
  70. vector<int> block(BUBEN);
  71.  
  72. void add( int x) {
  73.     cnt[x]++;
  74.     if (cnt[x] == 1)
  75.         block[x / BUBEN]++;
  76.     return;
  77. }
  78.  
  79. void del(int x) {
  80.     cnt[x]--;
  81.     if (cnt[x] == 0)
  82.         block[x / BUBEN]--;
  83.     return;
  84. }
  85.  
  86. signed main()
  87. {
  88.     ios_base::sync_with_stdio(0);
  89.     cin.tie(0);
  90.     cout.tie(0);
  91.     srand(time(0));
  92.     cout.precision(17);
  93.  
  94.     int n;
  95.     cin >> n;
  96.  
  97.     vector<int> vc(n);
  98.     set<int> st;
  99.  
  100.     for (int i = 0; i < n; i++) {
  101.         cin >> vc[i];
  102.         st.insert(vc[i]);
  103.     }
  104.  
  105.     map<int, int> mp;
  106.     int k = 0;
  107.  
  108.     while (st.size()) {
  109.         mp[*st.begin()] = k;
  110.         k++;
  111.         st.erase(st.begin());
  112.     }
  113.  
  114.     for (int i = 0; i < n; i++)
  115.         vc[i] = mp[vc[i]];
  116.    
  117.     int q;
  118.     cin >> q;
  119.  
  120.     vector<S> query(q);
  121.    
  122.     for (int i = 0; i < q; i++) {
  123.         int l, r;
  124.         cin >> l >> r;
  125.         l--;
  126.         r--;
  127.         query[i] = { l, r, i };
  128.     }
  129.    
  130.     sort(all(query), cmp);
  131.     int nl = -1, nr = -1;
  132.  
  133.     vector<int> answer(q);
  134.  
  135.     for (int i = 0; i < q; i++) {
  136.         while (nr + 1 <= query[i].sec) {
  137.             nr++;
  138.             add(vc[nr]);
  139.         }
  140.         while (nr > query[i].sec) {
  141.             del(vc[nr]);
  142.             nr--;
  143.         }
  144.  
  145.         while (nl + 1 < query[i].fir) {
  146.             nl++;
  147.             del(vc[nl]);
  148.         }
  149.         while (nl >= query[i].fir) {
  150.             add(vc[nl]);
  151.             nl--;
  152.         }
  153.  
  154.         int ans = 0;
  155.         for (int i : block)
  156.             ans += i;
  157.         answer[query[i].idx] = ans;
  158.     }
  159.  
  160.     for (int i : answer)
  161.         cout << i << endl;
  162.     return 0;
  163. }
  164.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement