QOJ.ac

QOJ

時間限制: 2 s 記憶體限制: 512 MB 總分: 100 可 Hack ✓

#23637. Marea

统计

Ovejita vive en un pequeño pueblo pesquero junto a un fiordo. Registró la altura del nivel del mar durante $n$ días consecutivos; en el día $i$ ($1\leq i\leq n$), la altura del nivel del mar es un entero positivo $h_i$.

Para un período seleccionado desde el día $l$ hasta el día $r$ (incluyendo $l$ y $r$), sean:

  • $M$ el valor máximo de la altura del nivel del mar en este período;
  • $A$ el índice del primer día en $[l,r]$ en que la altura del nivel del mar alcanza $M$;
  • $B$ el índice del último día en $[l,r]$ en que la altura del nivel del mar alcanza $M$.

Entonces el valor de marea de este período se define como $M\cdot(B-A)$. Ten en cuenta que si la altura máxima del nivel del mar aparece una sola vez, entonces $A=B$, y en ese caso el valor de marea es $0$.

Ovejita hará $q$ preguntas en línea (online). Cada pregunta dará $l$ y $r$, y debes elegir un subperíodo $[x,y]$ dentro de $[l,r]$ (es decir, $l\leq x\leq y\leq r$) de modo que el valor de marea de dicho período sea máximo.

Entrada

La primera línea contiene dos enteros $n$ y $q$ ($1\leq n\leq 5\times 10^5$, $1\leq q\leq 3\times10^6$), que representan respectivamente el número total de días observados y el número de consultas.

La segunda línea contiene $n$ enteros positivos $h_1, h_2, \dots, h_n$ ($1\leq h_i\leq 10^9$), que representan en orden la altura del nivel del mar de cada día.

La tercera línea contiene dos enteros $l_1$ y $r_1$ ($1\leq l_1\leq r_1\leq n$), que representan el intervalo de la primera consulta.

Para la $i$-ésima consulta ($2\leq i\leq q$), suponiendo que $lastans$ es la respuesta a la consulta anterior, definimos: $$ 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 $$

Entonces la $i$-ésima consulta es en realidad $l_i=\min(a_i,b_i)$, $r_i=\max(a_i,b_i)$.

Salida

Sea $ans_i$ la respuesta a la $i$-ésima consulta. Imprime un único entero: $(ans_1+1) \oplus (ans_2+2) \oplus \cdots \oplus (ans_q+q)$.

Ten en cuenta que $\oplus$ representa la operación XOR bit a bit.

Ejemplos

Entrada 1

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

Salida 1

1

Nota

El intervalo de la primera consulta es $[2,7]$ y el período óptimo es $[2,4]$, donde la altura máxima del nivel del mar es $8$. En el período $[2,4]$, la altura $8$ aparece por primera vez en el día $2$ y por última vez en el día $4$, por lo que el valor de marea de este período es $8\times(4-2)=16$.

Las consultas generadas posteriormente y sus respuestas respectivas son, en orden: $ [2,3]\to 0,\quad [3,6]\to 0,\quad [2,4]\to 16,\quad [3,7]\to 0. $

Por lo tanto, la suma XOR requerida es $(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.