Advertisement
he_obviously

Untitled

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