Advertisement
Guest User

Untitled

a guest
Jul 19th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. int sp[100010][50];
  4. long long step[50];
  5.  
  6. int logg(int);
  7.  
  8. using namespace std;
  9. int main()
  10. {
  11. int i, n, m, j, a1, u, v, len, l, mi, u1, v1;
  12. cin >> n >> m >> a1;
  13. cin >> u >> v;
  14. sp[0][0] = a1;
  15. step[0] = 1;
  16. for (i = 1; i < n; i++)
  17. sp[0][i] = (23 * sp[0][i - 1] + 21563) % 16714589;
  18. l = logg(n);
  19. for (i = 1; i <= l; i++)
  20. step[i] = step[i - 1] * 2;
  21.  
  22. for (j = 1; j < l + 1; j++)
  23. for (i = 0; i + step[j] - 1 < n; i++)
  24. {
  25. sp[j][i] = min(sp[j - 1][i], sp[j - 1][i + step[j - 1]]);
  26. }
  27. cout << u << ' ' << v << ' ';
  28. u1 = min(u, v);
  29. v1 = max(u, v);
  30. len = logg(v1 - u1 + 1);
  31. mi = min(sp[len][u], sp[len][v - step[len] + 1]);
  32. cout << mi << endl;
  33. for (a1 = 2; a1 <= m; a1++){
  34. u = (17 * u + 751 + mi + 2 * a1) % n + 1;
  35. v = (13 * v + 593 + mi + 5 * a1) % n + 1;
  36. cout << u << ' ' << v << ' ';
  37. u1 = min(u - 1, v);
  38. v1 = max(u - 1, v);
  39. len = logg(v1 - u1 + 1);
  40. mi = min(sp[len][u1], sp[len][v1 - step[len] + 1]);
  41. cout << mi << endl;
  42. }
  43. return 0;
  44. }
  45.  
  46. int logg(int len)
  47. {
  48. if (len == 1)
  49. return 0;
  50. return logg(len / 2) + 1;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement