hpnq

DD

Feb 9th, 2023
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.09 KB | None | 0 0
  1. #include "bits/stdc++.h"
  2. //speed coding
  3.  
  4. #define mp make_pair
  5. #define cve(tpy) for (auto i : tpy) {for(auto j : i){cout << j << " ";  }cout << "\n";} ;
  6. #define f first
  7. #define s second
  8. #define loop(i, x, n) for (int i = x; i < n; i++)
  9. #define joop(x, n) for (ll j = x; j < n; j++)
  10. #define lp(n) for (ll i = 0; i < n; i++)
  11. #define err cout << "ERROR" << endl;
  12. #define all(x) x.begin(), x.end()
  13. #define pb push_back
  14. #define sz(x) x.size()
  15. #define rndm rng()
  16.  
  17. // types
  18. #define pii pair<int, int>
  19. #define pll pair<ll, ll>
  20. #define vvi vector<vector<int>>
  21. #define vvll vector<vector<ll>>
  22. typedef long long ll;
  23. typedef long double ld;
  24.  
  25. // types of data
  26. #define inf 1000000000
  27. #define infll 1000000000000000000
  28. #define INF ll(1e18)
  29.  
  30. //#define md 998244353
  31. //#define mod 1000000009
  32. #define K 239017
  33.  
  34. #define DEBUG 1
  35. using namespace std;
  36. mt19937_64 rng(113113);
  37. uniform_int_distribution<ll> drist;
  38.  
  39.  
  40. struct node{
  41.     node *l, *r;
  42.     int key, p;
  43.     node(int x) {
  44.         key = x;
  45.         p = rng();
  46.         l = 0, r = 0;
  47.     }
  48. };
  49.  
  50. node* merge(node *l, node *r){
  51.     if(!l) return r;
  52.     if(!r) return l;
  53.     if(l->p > r->p){
  54.         l->r = merge(l->r, r);
  55.         return l;
  56.     }else{
  57.         r->l = merge(l, r->l);
  58.         return r;
  59.     }
  60. }
  61.  
  62. pair<node*, node*> split(node* T, int k){
  63.     if(!T){
  64.         return {0, 0};
  65.     }
  66.     if(k > T->key){
  67.         auto s = split(T->r, k);
  68.         T->r = s.f;
  69.         return {T, s.s};
  70.     }else{
  71.         auto s = split(T->l, k);
  72.         T->l = s.s;
  73.         return {s.f, T};
  74.     }
  75. }
  76.  
  77. node* insert(node* t, int x){
  78.     node k(x);
  79.     auto s = split(t, k.key);
  80.     t = merge(merge(s.f, &k), s.s);
  81.     return t;
  82. }
  83.  
  84. node *remove(node* t, int x){
  85.     auto d = split(t, x);
  86.     d.f->r = 0;
  87.    
  88.     return merge(d.f, d.s);
  89. }
  90.  
  91.  
  92. void solve(){
  93.     int n, m;
  94.     cin >> n >> m;
  95.  
  96.  
  97. }
  98.  
  99. int main() {
  100.     ios::sync_with_stdio(0);
  101.     cin.tie(0);
  102. #ifdef DEBUG
  103.     freopen("text.txt", "r", stdin);
  104.  
  105. #else
  106. #endif
  107. //    int n;
  108. //    cin >> n;
  109. //    loop(i, 0, n){
  110. //        solve();
  111. //    }
  112. solve();
  113.     return 0;
  114. }
  115.  
Advertisement
Add Comment
Please, Sign In to add comment