Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <vector>
- #include<iostream>
- #include <algorithm>
- #include <cmath>
- #include <iomanip>
- #include <fstream>
- #include <string>
- #include <set>
- #include <deque>
- #include <queue>
- #include <map>
- #include <bitset>
- #include <random>
- #include <cassert>
- #include <unordered_map>
- #include <unordered_set>
- #include<math.h>
- using namespace std;
- typedef unsigned int ui;
- typedef long long ll;
- typedef unsigned long long ull;
- typedef long double ld;
- #define endl "\n"
- #define all(a) a.begin(), a.end()
- #define allr(a) a.rbegin(), a.rend()
- #define pb push_back
- #define pikachu push_back
- #define F first
- #define S second
- #define mp make_pair
- ll inf = 1e18;
- ll mod = 998244353;
- //const ll mod = 1 << 32;
- /*
- ll mas[1 << 24 + 1];*//*
- ui cur = 0,a,b;
- ui next_rand() {
- cur = cur * a + b;
- return cur >> 8;
- }*/
- ll get_kek(ll left, ll right, vector<ll>& log, vector <vector<ll>>& sparce) {
- ll len = right - left + 1;
- ll level = log[len];
- return min(sparce[level][left], sparce[level][right - (1 << level) + 1]);
- }
- void solve() {
- ll k, n;
- cin >> n;
- vector<ll> a(n);
- ll m;
- cin >> m;
- ll a1, u1, v1;
- cin >> a1;
- cin >> u1 >> v1;
- a[0] = a1;
- for (ll i = 1; i < n; i++) {
- a[i] = (23 * a[i - 1] + 21563) % 16714589;
- }
- vector <vector<ll>> sparce(1, vector <ll>(1 + n));
- for (ll i = 1; i <= n; i++) {
- sparce[0][i] = a[i - 1];
- }
- for (ll len = 1; len * 2 <= n; len *= 2) {
- sparce.push_back(sparce.back());
- for (ll i = 1; i + len <= n; i++) {
- sparce.back()[i]= min(sparce.back()[i], sparce.back()[i + len]);
- }
- }
- vector <ll> log(1 + n, 0);
- for (ll i = 2; i <= n; i++) log[i] = log[i >> 1] + 1;
- for (ll i = 0; i < m; i++) {
- ll pre_ans = get_kek(min(u1,v1), max(v1,u1), log, sparce);
- if (i == m - 1) cout << u1 << ' ' << v1 << ' '<< pre_ans << endl;
- u1 = (u1 * 17 + 751 + pre_ans + 2 * (i+1)) % n + 1;
- v1 = (v1 * 13 + 593 + pre_ans + 5 * (i+1)) % n + 1;
- }
- }
- signed main() {
- ios_base::sync_with_stdio(false);
- cin.tie(nullptr);
- freopen("sparse.in", "r", stdin);
- freopen("sparse.out", "w", stdout);
- ll t = 1;
- //cin >> t;
- while (t--) {
- solve();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment