Розріджені таблиці
Розріджені таблиці
Задано масив з n чисел. Потрібно написати програму, яка буде відповідати на запити наступного виду: знайти мінімум на відрізку між u та v включно.
Вхідні дані
У першому рядку задано три натуральних числа n, m (1 ≤ n ≤ 10^5
, m ≤ 10^7
) та a[1]
(1 ≤ a[1]
< 16714589) - кількість елементів у масиві, кількість запитів і перший елемент масиву відповідно. Другий рядок містить два натуральних числа u[1]
та v[1]
(1 ≤ u[1]
, v[1]
≤ n) - перший запит.
Елементи a[2]
, a[3]
, ..., a[n]
задано наступною формулою:
a[i+1]
= (23 * a[i]
+ 21563) mod 16714589.
Наприклад, при n = 10, a[1]
= 12345 отримується наступний масив:
a = (12345, 305498, 7048017, 11694653, 1565158, 2591019, 9471233, 570265, 13137658, 1325095).
Запити генеруються наступним чином:
u[i+1]
= ((17 * u[i]
+ 751 + ans[i]
+ 2i) mod n) + 1,
v[i+1]
= ((13 * v[i]
+ 593 + ans[i]
+ 5i) mod n) + 1,
де ans[i]
- відповідь на запит номер i.
Вихідні дані
Вивести u[m]
, v[m]
та ans[m]
(останій запит та відповідь на нього).
Приклад
10 8 12345 3 9
5 3 1565158