Advertisement
he_obviously

Untitled

Jul 16th, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.57 KB | None | 0 0
  1. #pragma GCC optimize("Ofast")
  2. #pragma GCC optimize("O3")
  3. #pragma GCC optimize("unroll-loops")
  4. #pragma GCC target("sse,sse2,ssse3,sse3,sse4,avx,popcnt,tune=native")
  5.  
  6. #include <bits/stdc++.h>
  7. //#include <ext/pb_ds/assoc_container.hpp>
  8. //include <ext/pb_ds/tree_policy.hpp>
  9.  
  10. using namespace std;
  11. //using namespace __gnu_pbds;
  12.  
  13. typedef long long ll;
  14. typedef long double ld;
  15.  
  16. #define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
  17. #define all(x) (x).begin(),(x).end()
  18. #define pii pair<int, int>
  19. #define sz(x) (int)x.size()
  20.  
  21. int main() {
  22.  
  23.     ios_base::sync_with_stdio(0);
  24.     cin.tie(0); cout.tie(0);
  25.  
  26.     int n, m, a1;
  27.  
  28.     cin >> n >> m >> a1;
  29.  
  30.     int logn = __lg(n);
  31.  
  32.     vector<int> lg(n + 1, 0);
  33.     lg[n] = logn;
  34.     vector<vector<int>> g(logn + 1, vector<int>(n));
  35.     g[0][0] = a1;
  36.     for (int i = 1; i < n; ++i) {
  37.         lg[i] = __lg(i);
  38.         g[0][i] = (23 * g[0][i - 1] + 21563) % 16714589;
  39.     }
  40.  
  41.     for (int i = 1; i <= logn; ++i) {
  42.         for (int j = 0; j + (1 << i) <= n; ++j) {
  43.             g[i][j] = min(g[i - 1][j], g[i - 1][j + (1 << (i - 1))]);
  44.         }
  45.     }
  46.  
  47.     int u1, v1, ans;
  48.  
  49.     cin >> u1 >> v1;
  50.  
  51.     for (int i = 1; i <= m; ++i) {
  52.         int l = min(v1, u1) - 1, r = max(v1, u1);
  53.         int log = lg[r - l];
  54.         ans = min(g[log][l], g[log][r - (1 << log)]);
  55.         if (i == m) break;
  56.         u1 = ((17 * u1 + 751 + ans + 2 * i) % n) + 1;
  57.         v1 = ((13 * v1 + 593 + ans + 5 * i) % n) + 1;
  58.     }
  59.  
  60.     cout << u1 << " " << v1 << " " << ans;
  61.  
  62.     return 0;
  63.  
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement