Codeforces Round 808 (Div. 1) |
---|
Закончено |
Вам дан массив целых чисел $$$a_1,\ldots, a_n$$$, где $$$1\le a_i \le n$$$ для всех $$$i$$$.
Так же есть функция «замены» $$$f$$$, которая принимает в качестве аргументов пару целых чисел $$$(l, r)$$$, где $$$l \le r$$$, и возвращает пару $$$$$$f\big( (l, r) \big)=\left(\min\{a_l,a_{l+1},\ldots,a_r\},\, \max\{a_l,a_{l+1},\ldots,a_r\}\right).$$$$$$
Рассмотрим повторные вызовы этой функции. То есть взяв начальную пару $$$(l, r)$$$ мы получаем $$$f\big((l, r)\big)$$$, затем $$$f\big(f\big((l, r)\big)\big)$$$, затем $$$f\big(f\big(f\big((l, r)\big)\big)\big)$$$ и так далее.
Вам нужно ответить на $$$q$$$ запросов. В $$$i$$$-м запросе вам даны два целых числа $$$l_i$$$ и $$$r_i$$$ ($$$1\le l_i\le r_i\le n$$$). Вы должны сказать, какое минимальное число раз вы должны применить функцию «замены» к паре $$$(l_i,r_i)$$$, чтобы получить $$$(1, n)$$$, или определить, что это невозможно.
Первая строка содержит два положительных целых числа $$$n$$$, $$$q$$$ ($$$1\le n,q\le 10^5$$$) — длина последовательности $$$a$$$ и количество запросов.
Вторая строка содержит $$$n$$$ положительных целых чисел $$$a_1,a_2,\ldots,a_n$$$ ($$$1\le a_i\le n$$$) — последовательность $$$a$$$.
Каждая из следующих $$$q$$$ строк содержит два целых числа $$$l_i$$$, $$$r_i$$$ ($$$1\le l_i\le r_i\le n$$$) — запросы.
Для каждого запроса выведите требуемое количество применений функции или $$$-1$$$, если достичь требуемого результата невозможно.
5 6 2 5 4 1 3 4 4 1 5 1 4 3 5 4 5 2 3
-1 0 1 2 3 4
6 3 2 3 4 6 1 2 5 6 2 5 2 3
5 1 3
5 3 3 2 2 4 1 2 5 1 3 1 5
-1 -1 0
В первом примере $$$n=5$$$ и $$$a=[2,5,4,1,3]$$$.
В первом запросе: $$$(4,4)\to(1,1)\to(2,2)\to(5,5)\to(3,3)\to(4,4)\to\ldots$$$, поэтому невозможно получить $$$(1,5)$$$.
Во втором запросе у вас уже есть $$$(1,5)$$$.
В третьем запросе: $$$(1,4)\to(1,5)$$$.
В четвертом запросе: $$$(3,5)\to(1,4)\to(1,5)$$$.
В пятом запросе: $$$(4,5)\to(1,3)\to(2,5)\to(1,5)$$$.
В шестом запросе: $$$(2,3)\to(4,5)\to(1,3)\to(2,5)\to(1,5)$$$.
Название |
---|