Advertisement
tuki2501

DPBABYL2

Apr 3rd, 2020
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.39 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define int long long
  5. #define all(x) (x).begin(),(x).end()
  6.  
  7. struct data {
  8.     int x = 0, y = 0, z = 0;
  9.     data() {}
  10.     data(int _x, int _y, int _z) {
  11.         x = _x; y = _y; z = _z;
  12.     }
  13. };
  14.  
  15. const int N = 16005 * 6;
  16.  
  17. int bit[N + 5];
  18.  
  19. void update(int i, int v) {
  20.     for (; i <= N; i += i & -i) {
  21.         bit[i] = max(bit[i], v);
  22.     }
  23. }
  24.  
  25. int get(int i) {
  26.     int v = 0;
  27.     for (; i; i -= i & -i) {
  28.         v = max(v, bit[i]);
  29.     }
  30.     return v;
  31. }
  32.  
  33. void solve(int n) {
  34.     memset(bit, 0, sizeof(bit));
  35.     vector<data> a;
  36.     set<int> s;
  37.     for (int i = 0; i < n; i++) {
  38.         int x, y, z;
  39.         cin >> x >> y >> z;
  40.         a.push_back(data(x, y, z));
  41.         a.push_back(data(y, x, z));
  42.         a.push_back(data(y, z, x));
  43.         a.push_back(data(z, y, x));
  44.         a.push_back(data(z, x, y));
  45.         a.push_back(data(x, z, y));
  46.         s.insert(x); s.insert(y); s.insert(z);
  47.     }
  48.     n *= 6;
  49.     vector<int> v(all(s));
  50.     for (int i = 0; i < (int) a.size(); i++) {
  51.         a[i].x = v.end() - lower_bound(all(v), a[i].x);
  52.         a[i].y = v.end() - lower_bound(all(v), a[i].y);
  53.     }
  54.     sort(a.begin(), a.end(), [](data a, data b) -> bool {
  55.         if (a.x == b.x) {
  56.             if (a.y == b.y) return a.z > b.z;
  57.             else return a.y > b.y;
  58.         }
  59.         else return a.x < b.x;
  60.     });
  61.     for (int i = 0; i < n; i++) {
  62.         int v = get(a[i].y);
  63.         update(a[i].y + 1, v + a[i].z);
  64.     }
  65.     cout << get(N) << '\n';
  66. }
  67.  
  68. signed main() {
  69.     for (int n; cin >> n && n; solve(n));
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement