DuongNhi99

PBCSEQ (Segment Tree)

Mar 10th, 2022
685
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. #define x first
  3. #define y second
  4. using namespace std;
  5.  
  6. const int N = 1e6 + 1;
  7. typedef pair <int, int> ii;
  8.  
  9. ii e[N];
  10. int n, x[N], sl = 0;
  11. long long bit[N], f[N];
  12.  
  13. void update(int u, long long val)
  14. {
  15.     while (u <= sl * 2) {
  16.         bit[u] = max(bit[u], val);
  17.         u += u&(-u);
  18.     }
  19. }
  20.  
  21. int get(int u)
  22. {
  23.     long long kq = 0;
  24.     while (u) {
  25.         kq = max(kq, bit[u]);
  26.         u -= u&(-u);
  27.     }
  28.     return kq;
  29. }
  30.  
  31. void tinh()
  32. {
  33.     int ds = 0;
  34.     for (int i = 1; i <= n; i++)
  35.         e[i].y = -e[i].y;
  36.        
  37.     sort(e + 1, e + n + 1);
  38.     reverse(e + 1,e + n + 1);
  39.    
  40.     for (int i = 1; i <= n; i++)
  41.         e[i].y = -e[i].y;
  42.    
  43.     for (int i = 1; i <= n; i++) {
  44.         int saker = get(e[i].y) + 1;
  45.         update(e[i].y, saker);
  46.         ds = max(ds,saker);
  47.     }
  48.    
  49.     cout << ds;
  50. }
  51. int main()
  52. {
  53.     ios::sync_with_stdio(false);
  54.     cin.tie(NULL); cout.tie(NULL);
  55.    
  56.     cin >> n;
  57.     for (int i = 1; i <= n; ++i) {
  58.         int u, v; cin >> u >> v;
  59.         e[i] = ii(u, v);
  60.         x[++sl] = u, x[++sl] = v;
  61.     }
  62.    
  63.     sort(x + 1, x + sl + 1);
  64.    
  65.     int slx = 0;
  66.     for (int i = 1; i <= sl; i++)
  67.         if (x[i] != x[i-1])
  68.             x[++slx] = x[i];
  69.     sl = slx;
  70.     for (int i = 1; i <= sl; i++) {
  71.         e[i].x = lower_bound(x+1, x+sl+1, e[i].x) - x;
  72.         e[i].y = lower_bound(x+1, x+sl+1, e[i].y) - x;
  73.     }
  74.    
  75.     tinh();
  76. }
Advertisement
Add Comment
Please, Sign In to add comment