Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 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. vector<int> ans;
  8.  
  9. void setmy(int i, int x, int lx, int rx) {
  10. if (rx - lx == 0) {
  11. tree[x] += 1;
  12. return;
  13. }
  14. int m = (lx + rx) / 2;
  15. if (i <= m) {
  16. setmy(i, 2 * x, lx, m);
  17. } else {
  18. setmy(i, 2 * x + 1, m + 1, rx);
  19. }
  20.  
  21. tree[x] = tree[2 * x] + tree[2 * x + 1];
  22. }
  23.  
  24. long long sum(int l, int r, int x, int lx, int rx) {
  25. if (l > rx || lx > r) {
  26. return 0;
  27. }
  28. if (lx >= l && rx <= r) {
  29. return tree[x];
  30. }
  31. int m = (rx + lx) / 2;
  32. return sum(l, r, 2 * x, lx, m) + sum(l, r, 2 * x + 1, m + 1, rx);
  33. }
  34.  
  35. int to_bin(int n) {
  36. int i = 1;
  37. for (; i <= n; i *= 2);
  38. return i;
  39. }
  40.  
  41. int32_t main() {
  42. int n;
  43.  
  44. while (cin >> n) {
  45. ans.resize(n);
  46. fill(ans.begin(), ans.end(), 0);
  47. int p = to_bin(n);
  48. tree.resize(2 * p);
  49. fill(tree.begin(), tree.end(), 0);
  50. int z1, z2;
  51.  
  52. for (int i = 0; i < n; i++) {
  53. cin >> z1 >> z2;
  54. setmy(z1, 1, 1, p);
  55. long long ans2 = sum(1, z1, 1, 1, p);
  56. ans[ans2-1]+=1;
  57. }
  58. for (int e: ans){
  59. cout << e << '\n';
  60. }
  61. }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement