Advertisement
Guest User

Untitled

a guest
Jul 21st, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.09 KB | None | 0 0
  1. /*
  2.  ▄███████▀▀▀▀▀▀███████▄
  3. ░▐████▀▒  Дядя  ▒▀██████▄
  4. ░███▀▒▒▒Богдан▒▒▒▒▒▀█████
  5. ░▐██▒▒▒▒▒▒Чекает▒▒▒▒▒████▌
  6. ░▐█▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████▌
  7. ░░█▒▄▀▀▀▀▀▄▒▒▄▀▀▀▀▀▄▒▐███▌
  8. ░░░▐░░░▄▄░░▌▐░░░▄▄░░▌▐███▌
  9. ░▄▀▌░░░▀▀░░▌▐░░░▀▀░░▌▒▀▒█▌
  10. ░▌▒▀▄░░░░▄▀▒▒▀▄░░░▄▀▒▒▄▀▒▌
  11. ░▀▄▐▒▀▀▀▀▒▒▒▒▒▒▀▀▀▒▒▒▒▒▒█
  12. ░░░▀▌▒▄██▄▄▄▄████▄▒▒▒▒█▀
  13. ░░░░▄██████████████▒▒▐▌
  14. ░░░▀███▀▀████▀█████▀▒▌
  15. ░░░░░▌▒▒▒▄▒▒▒▄▒▒▒▒▒▒▐
  16. ░░░░░▌▒▒▒▒▀▀▀▒▒▒▒▒▒▒▐
  17.  */
  18. #pragma comment(linker,"/STACK:128000000")
  19. #include <stdio.h>
  20. #include <cstdlib>
  21. #include <cctype>
  22. #include <cstring>
  23. #include <cmath>
  24. #include <ctime>
  25. #include <cassert>
  26.  
  27. #include <deque>
  28. #include <string>
  29. #include <vector>
  30. #include <queue>
  31. #include <stack>
  32. #include <map>
  33. #include <set>
  34. #include <unordered_set>
  35. #include <unordered_map>
  36. #include <utility>
  37. #include <algorithm>
  38. #include <tuple>
  39. #include <iostream>
  40. #include <random>
  41. #include <iterator>
  42. #include <list>
  43. #include <iomanip>
  44. #include <random>
  45. #include <complex>
  46. #include <list>
  47. #include <deque>
  48. #include <numeric>
  49.  
  50. using namespace std;
  51.  
  52. typedef long long ll;
  53. typedef long double ld;
  54. typedef vector<ll> vl;
  55. typedef vector<vl> vvl;
  56. typedef vector<int> vi;
  57. typedef vector<vi> vvi;
  58. typedef pair<int, int> pii;
  59. typedef pair<double, double> ptd;
  60.  
  61. const int inf = (int)1e9 + 1000;
  62. const ll infLL = 10000000000000001LL;
  63. const int mod = (int)1e9 + 7;
  64. const double eps = 1e-7;
  65. const double pi = 3.141592653589793;
  66. const int maxlen = (int)1e6 + 10;
  67. const int base = (int)1e9;
  68.  
  69. const int dd = (int)100 + 1;
  70.  
  71. #define ACCEPTED return 0;
  72. #define mp make_pair
  73. #define all(x) (x).begin(), (x).end()
  74. #define rall(x) (x).rbegin(), (x).rend()
  75. #define optimize cin.sync_with_stdio(false);cout.sync_with_stdio(false);cin.tie(0);
  76. #define name "dwarf"
  77. #define scnaf scanf
  78.  
  79. #define X first
  80. #define Y second
  81.  
  82. struct triple
  83. {
  84.     int x, y, z;
  85.  
  86.     bool operator<(triple t) const
  87.     {
  88.         return x < t.x && y < t.y && z < t.z;
  89.     }
  90. };
  91.  
  92. int a;
  93. int b;
  94. int C;
  95. int M;
  96. int r()
  97. {
  98.     a = 36969 * (a & M) + (a >> 16);
  99.     b = 18000 * (b & M) + (b >> 16);
  100.     return (C & ((a << 16) + b)) % 1000000;
  101. }
  102.  
  103. int t[maxlen];
  104.  
  105. void add(int i, int x)
  106. {
  107.     for (; i < maxlen; i = i | (i + 1))
  108.         t[i] = max(t[i], x);
  109. }
  110.  
  111. int get(int i)
  112. {
  113.     int ans = 0;
  114.     for (; i >= 0; i = (i & (i + 1)) - 1)
  115.         ans = max(ans, t[i]);
  116.     return ans;
  117. }
  118.  
  119. void solve()
  120. {
  121.     memset(t, 0, sizeof(t));
  122.     int m, n, A, B;
  123.  
  124.     scanf("%d %d %d %d", &m, &n, &A, &B);
  125.  
  126.     if (m == 0 && n == 0)
  127.         exit(0);
  128.  
  129.     a = A;
  130.     b = B;
  131.     C = ~(1<<31);
  132.     M = (1<<16)-1;
  133.  
  134.     vector<triple> v;
  135.  
  136.     for (int i = 0; i < m; i++) {
  137.         int x, y, z;
  138.         scanf("%d %d %d", &x, &y, &z);
  139.  
  140.         v.push_back({x, y, z});
  141.     }
  142.  
  143.     for (int i = 0; i < n; i++) {
  144.         int x = r();
  145.         int y = r();
  146.         int z = r();
  147.  
  148.         v.push_back({x, y, z});
  149.     }
  150.  
  151.     auto w = v;
  152.  
  153.     sort(all(w));
  154.  
  155.     vi q;
  156.  
  157.     for (int i = 0; i < v.size(); i++)
  158.         q.push_back(lower_bound(all(w), v[i]) - w.begin());
  159.  
  160.     int ans = 0;
  161.     for (int x : q) {
  162.         ans = max(ans, get(x - 1) + 1);
  163.         add(x, ans);
  164.     }
  165.  
  166.     printf("%d\n", ans);
  167. }
  168.  
  169. int main()
  170. {
  171. #ifdef _DEBUG
  172.     freopen("input.txt", "rt", stdin);
  173.     freopen("output.txt", "wt", stdout);
  174. //#else
  175. //    freopen(name".in", "rt", stdin);
  176. //    freopen(name".out", "wt", stdout);
  177. #endif
  178.  
  179.     while (true)
  180.         solve();
  181.  
  182.     return 0;
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement