Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- int sp[100010][50];
- long long step[50];
- int logg(int);
- using namespace std;
- int main()
- {
- int i, n, m, j, a1, u, v, len, l, mi, u1, v1;
- cin >> n >> m >> a1;
- cin >> u >> v;
- sp[0][0] = a1;
- step[0] = 1;
- for (i = 1; i < n; i++)
- sp[0][i] = (23 * sp[0][i - 1] + 21563) % 16714589;
- l = logg(n);
- for (i = 1; i <= l; i++)
- step[i] = step[i - 1] * 2;
- for (j = 1; j < l + 1; j++)
- for (i = 0; i + step[j] - 1 < n; i++)
- {
- sp[j][i] = min(sp[j - 1][i], sp[j - 1][i + step[j - 1]]);
- }
- cout << u << ' ' << v << ' ';
- u1 = min(u, v);
- v1 = max(u, v);
- len = logg(v1 - u1 + 1);
- mi = min(sp[len][u], sp[len][v - step[len] + 1]);
- cout << mi << endl;
- for (a1 = 2; a1 <= m; a1++){
- u = (17 * u + 751 + mi + 2 * a1) % n + 1;
- v = (13 * v + 593 + mi + 5 * a1) % n + 1;
- cout << u << ' ' << v << ' ';
- u1 = min(u - 1, v);
- v1 = max(u - 1, v);
- len = logg(v1 - u1 + 1);
- mi = min(sp[len][u1], sp[len][v1 - step[len] + 1]);
- cout << mi << endl;
- }
- return 0;
- }
- int logg(int len)
- {
- if (len == 1)
- return 0;
- return logg(len / 2) + 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement