ivnikkk

Untitled

Dec 24th, 2021
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. #include <vector>
  2. #include<iostream>
  3. #include <algorithm>
  4. #include <cmath>
  5. #include <iomanip>
  6. #include <fstream>
  7. #include <string>
  8. #include <set>
  9. #include <deque>
  10. #include <queue>
  11. #include <map>
  12. #include <bitset>
  13. #include <random>
  14. #include <cassert>
  15. #include <unordered_map>
  16. #include <unordered_set>
  17. #include<math.h>
  18. using namespace std;
  19. typedef unsigned int ui;
  20. typedef long long ll;
  21. typedef unsigned long long ull;
  22. typedef long double ld;
  23. #define endl "\n"
  24. #define all(a) a.begin(), a.end()
  25. #define allr(a) a.rbegin(), a.rend()
  26. #define pb push_back
  27. #define pikachu push_back
  28. #define F first
  29. #define S second
  30. #define mp make_pair
  31. ll inf = 1e18;
  32. ll mod = 998244353;
  33. //const ll mod = 1 << 32;
  34. /*
  35. ll mas[1 << 24 + 1];*//*
  36. ui cur = 0,a,b;
  37. ui next_rand() {
  38. cur = cur * a + b;
  39. return cur >> 8;
  40. }*/
  41. ll get_kek(ll left, ll right, vector<ll>& log, vector <vector<ll>>& sparce) {
  42. ll len = right - left + 1;
  43. ll level = log[len];
  44. return min(sparce[level][left], sparce[level][right - (1 << level) + 1]);
  45. }
  46. void solve() {
  47. ll k, n;
  48. cin >> n;
  49. vector<ll> a(n);
  50. ll m;
  51. cin >> m;
  52. ll a1, u1, v1;
  53. cin >> a1;
  54. cin >> u1 >> v1;
  55. a[0] = a1;
  56. for (ll i = 1; i < n; i++) {
  57. a[i] = (23 * a[i - 1] + 21563) % 16714589;
  58. }
  59. vector <vector<ll>> sparce(1, vector <ll>(1 + n));
  60. for (ll i = 1; i <= n; i++) {
  61. sparce[0][i] = a[i - 1];
  62. }
  63. for (ll len = 1; len * 2 <= n; len *= 2) {
  64. sparce.push_back(sparce.back());
  65. for (ll i = 1; i + len <= n; i++) {
  66. sparce.back()[i]= min(sparce.back()[i], sparce.back()[i + len]);
  67. }
  68. }
  69. vector <ll> log(1 + n, 0);
  70. for (ll i = 2; i <= n; i++) log[i] = log[i >> 1] + 1;
  71. for (ll i = 0; i < m; i++) {
  72. ll pre_ans = get_kek(min(u1,v1), max(v1,u1), log, sparce);
  73. if (i == m - 1) cout << u1 << ' ' << v1 << ' '<< pre_ans << endl;
  74. u1 = (u1 * 17 + 751 + pre_ans + 2 * (i+1)) % n + 1;
  75. v1 = (v1 * 13 + 593 + pre_ans + 5 * (i+1)) % n + 1;
  76. }
  77. }
  78. signed main() {
  79. ios_base::sync_with_stdio(false);
  80. cin.tie(nullptr);
  81.  
  82. freopen("sparse.in", "r", stdin);
  83. freopen("sparse.out", "w", stdout);
  84. ll t = 1;
  85. //cin >> t;
  86. while (t--) {
  87. solve();
  88. }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment