Guest User

b.cpp

a guest
Mar 12th, 2026
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.79 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define f first
  3. #define s second
  4. #define ll long long
  5. #define pb push_back
  6. #define IOS ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
  7.  
  8. using namespace std;
  9. const int MAXN = 5e5 + 10;
  10. const int MOD = 1e9 + 7;
  11. int t[4 * MAXN];
  12. void update(int v, int tl, int tr, int pos, int val){
  13.     if (tl > tr){
  14.         return;
  15.     }
  16.     if (tl == tr){
  17.         t[v] += val;
  18.         return;
  19.     }
  20.     int tm = (tl + tr) >> 1;
  21.     if (pos <= tm){
  22.         update((v << 1), tl, tm, pos, val);
  23.     }
  24.     else{
  25.         update((v << 1) | 1, tm + 1, tr, pos, val);
  26.     }
  27.     t[v] = t[(v << 1)] + t[(v << 1) | 1];
  28. }
  29.  
  30. int get_sum(int v, int tl, int tr, int l, int r){
  31.     if (l > r){
  32.         return 0;
  33.     }
  34.     if (l == tl && r == tr){
  35.         return t[v];
  36.     }
  37.     int tm = (tl + tr) >> 1;
  38.     return get_sum((v << 1), tl, tm, l, min(r, tm))
  39.         + get_sum((v << 1) | 1, tm + 1, tr, max(l, tm + 1), r);
  40. }
  41. vector <int> g[MAXN];
  42.  
  43. int main(){
  44.     IOS;
  45.     int n, m;
  46.     cin >> n >> m;
  47.     for (int i = 0; i < m; i++){
  48.         int u, v;
  49.         cin >> u >> v;
  50.         g[max(u, v)].pb(min(u, v));
  51.     }
  52.     int q;
  53.     cin >> q;
  54.     pair <pair <int, int>, int> a[q + 1];
  55.     for (int i = 1; i <= q; i++){
  56.         int l, r;
  57.         cin >> l >> r;
  58.         a[i] = {{r, l}, i};
  59.     }
  60.  
  61.     sort(a + 1, a + q + 1);
  62.     int pos = 0;
  63.     int ans[q + 1] = {0};
  64.     for (int i = 1; i <= q; i++){
  65.         int l = a[i].f.s;
  66.         int r = a[i].f.f;
  67.         for (int j = pos + 1; j <= r; j++){
  68.             for (int v : g[j]){
  69.                 update(1, 1, n, v, 1);
  70.             }
  71.         }
  72.         pos = r;
  73.         ans[a[i].s] = r - l + 1 - get_sum(1, 1, n, l, r);
  74.     }
  75.  
  76.  
  77.     for (int i = 1; i <= q; i++){
  78.         cout << ans[i] << '\n';
  79.     }
  80. }
  81.  
  82.  
Advertisement
Add Comment
Please, Sign In to add comment