Advertisement
Guest User

Untitled

a guest
Apr 1st, 2020
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define int long long
  4. using namespace std;
  5.  
  6. vector<int> tree;
  7.  
  8. void setmy(int i, int x, int lx, int rx) {
  9.     if (rx - lx == 0) {
  10.         tree[x] += 1;
  11.         return;
  12.     }
  13.     int m = (lx + rx) / 2;
  14.     if (i <= m) {
  15.         setmy(i, 2 * x + 1, lx, m);
  16.     } else {
  17.         setmy(i, 2 * x + 2, m + 1, rx);
  18.     }
  19.  
  20.     tree[x] = tree[2 * x + 1] + tree[2 * x + 2];
  21. }
  22.  
  23. long long sum(int l, int r, int x, int lx, int rx) {
  24.     if (l > rx || lx > r) {
  25.         return 0;
  26.     }
  27.     if (lx >= l && rx <= r) {
  28.         return tree[x];
  29.     }
  30.     int m = (rx + lx) / 2;
  31.     int s1 = sum(l, r, 2 * x + 1,lx,m);
  32.     int s2 = sum(l, r, 2 * x + 2,m+1,rx);
  33.     return s1 + s2;
  34. }
  35.  
  36. int to_bin(int n) {
  37.     int i = 1;
  38.     for (; i <= n; i *= 2);
  39.     return i;
  40. }
  41.  
  42. int32_t main() {
  43.     int n;
  44.  
  45.     while (cin >> n) {
  46.         int p = to_bin(n);
  47.         tree.assign(4*32001, 0);
  48.         int z1, z2;
  49.         vector<int> ans(n);
  50.  
  51.         for (int i = 0; i < n; i++) {
  52.             cin >> z1 >> z2;
  53.             long long ans2 = sum(0, z1, 0, 0, 32001);
  54.             ans[ans2]+=1;
  55.             setmy(z1, 0, 0, 32001);
  56.         }
  57.         for (auto e: ans){
  58.             cout << e << '\n';
  59.         }
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement