Advertisement
Guest User

Untitled

a guest
Nov 17th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3. #include <algorithm>
  4. #include <vector>
  5. using namespace std;
  6. struct st {
  7. long long n;
  8. vector < vector <long long> > t;
  9. vector <long long> a;
  10. vector <long long> b;
  11. st(){};
  12. st (vector<long long> q) {
  13. n = q.size();
  14. t.assign(n, vector<long long>(20));
  15. a.assign(n + 1, -1);
  16. b.assign(n + 1, -1);
  17. long long d = 0, d2 = 1;
  18. while (d2 <= n)
  19. {
  20. b[d2] = d2;
  21. a[d2] = d;
  22. d2 *= 2;
  23. d++;
  24. }
  25. for (int i = 1; i <= n; i++)
  26. {
  27. if (a[i] != -1)
  28. {
  29. d = a[i];
  30. d2 = b[i];
  31. }
  32. else
  33. {
  34. a[i] = d;
  35. b[i] = d2;
  36. }
  37. }
  38. for (int i = 0; i < n; i++)
  39. {
  40. t[i][0] = q[i];
  41. }
  42. long long p = 1;
  43. for (int j = 1; j < 20; ++j)
  44. {
  45. p = p * 2;
  46. for (int i = 0; i + p - 1 < n; ++i)
  47. {
  48. t[i][j] = min (t[i][j - 1], t[i + p / 2][j - 1]);
  49. }
  50. }
  51. }
  52. long long mi (long long l, long long r){
  53. if (l > r) swap(l, r);
  54. int j = a[r - l + 1];
  55. int k = b[r - l + 1];
  56. //cout << l << ' ' << r << ' ' << j << ' ' << k << endl;
  57. return (min(t[l][j], t[r - k + 1][j]));
  58. }
  59. };
  60. int main()
  61. {
  62. /*
  63. freopen("sparse.in", "r", stdin);
  64. freopen("sparse.out", "w", stdout);
  65. */
  66. long long n, m, i, x, y, p, x1, y1;
  67. cin >> n >> m;
  68. vector <long long> a (n, 0);
  69. for (i = 1; i < n; i++)
  70. {
  71. a[i] = (23 * a[i - 1] + 21563) % 16714589;
  72. }
  73. st t(a);
  74. cin >> x >> y;
  75. for (i = 1; i < m; i++)
  76. {
  77. x1 = ((17 * x + 751 + t.mi(x - 1, y - 1) + 2 * i) % n) + 1;
  78. y1 = ((13 * y + 593 + t.mi(x - 1, y - 1) + 5 * i) % n) + 1;
  79. x = x1;
  80. y = y1;
  81. }
  82. cout << x << " " << y << " " << t.mi(x - 1, y - 1);
  83. return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement