QOJ.ac

QOJ

حد الوقت: 2 s حد الذاكرة: 512 MB مجموع النقاط: 100 قابلة للهجوم ✓

#23637. Прилив

الإحصائيات

Барашек живёт в маленькой рыбацкой деревне на берегу фьорда. Он записывал высоту уровня моря на протяжении $n$ дней подряд; в $i$-й день ($1\leq i\leq n$) высота уровня моря равнялась положительному целому числу $h_i$.

Для выбранного промежутка времени с $l$-го по $r$-й день (включая $l$ и $r$) обозначим:

  • $M$ — максимальное значение высоты уровня моря на этом промежутке;
  • $A$ — номер первого дня из $[l,r]$, в который высота уровня моря достигает значения $M$;
  • $B$ — номер последнего дня из $[l,r]$, в который высота уровня моря достигает значения $M$.

Тогда величина прилива для этого промежутка определяется как $M\cdot(B-A)$. Обратите внимание: если максимальная высота уровня моря встречается только один раз, то $A=B$, и в этом случае величина прилива равна $0$.

Барашек будет в режиме онлайн задавать $q$ вопросов. В каждом вопросе даны $l$ и $r$, а вам нужно выбрать подпромежуток $[x,y]$ внутри $[l,r]$ (то есть $l\leq x\leq y\leq r$) так, чтобы величина прилива для этого подпромежутка была максимальной.

Входные данные

Первая строка содержит два целых числа $n$ и $q$ ($1\leq n\leq 5\times 10^5$, $1\leq q\leq 3\times10^6$) — общее количество дней наблюдений и количество запросов соответственно.

Вторая строка содержит $n$ положительных целых чисел $h_1, h_2, \dots, h_n$ ($1\leq h_i\leq 10^9$), последовательно задающих высоту уровня моря в каждый из дней.

Третья строка содержит два целых числа $l_1$ и $r_1$ ($1\leq l_1\leq r_1\leq n$), задающих отрезок первого запроса.

Для $i$-го запроса ($2\leq i\leq q$), пусть $lastans$ — ответ на предыдущий запрос; положим: $$ a_i = \left(l_{i-1} + lastans\cdot37\right) \bmod n + 1,\quad b_i = \left(l_{i-1} + r_{i-1} + lastans\cdot53\right) \bmod n + 1 $$

Тогда $i$-й запрос на самом деле задаётся границами $l_i=\min(a_i,b_i)$ и $r_i=\max(a_i,b_i)$.

Выходные данные

Пусть $ans_i$ означает ответ на $i$-й запрос. Выведите одно целое число: $(ans_1+1) \oplus (ans_2+2) \oplus \cdots \oplus (ans_q+q)$.

Обратите внимание, что $\oplus$ обозначает операцию побитового исключающего ИЛИ (XOR).

Примеры

Входные данные 1

8 5
5 8 2 8 4 9 3 9
2 7

Выходные данные 1

1

Примечание

Отрезок первого запроса равен $[2,7]$, оптимальный подпромежуток — $[2,4]$, где максимальная высота уровня моря равна $8$. На промежутке $[2,4]$ высота $8$ впервые встречается во $2$-й день, а в последний раз — в $4$-й день, поэтому величина прилива для этого промежутка равна $8\times(4-2)=16$.

Последующие сгенерированные запросы и ответы на них по порядку: $ [2,3]\to 0,\quad [3,6]\to 0,\quad [2,4]\to 16,\quad [3,7]\to 0. $

Следовательно, искомая XOR-сумма равна $(16+1)\oplus (0+2)\oplus (0+3)\oplus (16+4)\oplus (0+5)=1$.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.