QOJ.ac

QOJ

実行時間制限: 2 s メモリ制限: 512 MB 満点: 100 ハック可能 ✓

#23637. Gezeiten

統計

Das kleine Schaf lebt in einem kleinen Fischerdorf an einem Fjord. Es hat an $n$ aufeinanderfolgenden Tagen die Höhe des Meeresspiegels aufgezeichnet; am $i$-ten Tag ($1\leq i\leq n$) beträgt die Höhe des Meeresspiegels eine positive ganze Zahl $h_i$.

Für einen ausgewählten Zeitraum vom $l$-ten Tag bis zum $r$-ten Tag (einschließlich $l$ und $r$) seien:

  • $M$ das Maximum der Meeresspiegelhöhe in diesem Zeitraum;
  • $A$ die Nummer des ersten Tages in $[l,r]$, an dem die Meeresspiegelhöhe den Wert $M$ erreicht;
  • $B$ die Nummer des letzten Tages in $[l,r]$, an dem die Meeresspiegelhöhe den Wert $M$ erreicht.

Dann ist der Gezeitenwert dieses Zeitraums definiert als $M\cdot(B-A)$. Bitte beachte: Wenn das Maximum der Meeresspiegelhöhe nur einmal vorkommt, gilt $A=B$, und der Gezeitenwert beträgt in diesem Fall $0$.

Das kleine Schaf stellt online $q$ Fragen. Jede Frage gibt $l$ und $r$ vor; bitte wähle in $[l,r]$ einen Teilzeitraum $[x,y]$ (also $l\leq x\leq y\leq r$), sodass der Gezeitenwert dieses Zeitraums maximal wird.

Eingabe

Die erste Zeile enthält zwei ganze Zahlen $n$ und $q$ ($1\leq n\leq 5\times 10^5$, $1\leq q\leq 3\times10^6$), die die Gesamtzahl der beobachteten Tage bzw. die Anzahl der Anfragen angeben.

Die zweite Zeile enthält $n$ positive ganze Zahlen $h_1, h_2, \dots, h_n$ ($1\leq h_i\leq 10^9$), die der Reihe nach die Höhe des Meeresspiegels an jedem Tag angeben.

Die dritte Zeile enthält zwei ganze Zahlen $l_1$ und $r_1$ ($1\leq l_1\leq r_1\leq n$), die das Intervall der ersten Anfrage angeben.

Für die $i$-te Anfrage ($2\leq i\leq q$) sei $lastans$ die Antwort auf die vorherige Anfrage, und es gelte: $$ 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 $$

Dann lautet die $i$-te Anfrage tatsächlich $l_i=\min(a_i,b_i)$ und $r_i=\max(a_i,b_i)$.

Ausgabe

Sei $ans_i$ die Antwort auf die $i$-te Anfrage. Gib eine einzige ganze Zahl aus: $(ans_1+1) \oplus (ans_2+2) \oplus \cdots \oplus (ans_q+q)$.

Bitte beachte, dass $\oplus$ die bitweise XOR-Verknüpfung bezeichnet.

Beispiele

Eingabe 1

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

Ausgabe 1

1

Hinweis

Das Intervall der ersten Anfrage ist $[2,7]$ und der optimale Zeitraum ist $[2,4]$, in dem die maximale Meeresspiegelhöhe $8$ beträgt. Im Zeitraum $[2,4]$ tritt die Höhe $8$ zum ersten Mal am Tag $2$ und zum letzten Mal am Tag $4$ auf, sodass der Gezeitenwert dieses Zeitraums $8\times(4-2)=16$ ist.

Die anschließend generierten Anfragen und ihre Antworten lauten der Reihe nach: $ [2,3]\to 0,\quad [3,6]\to 0,\quad [2,4]\to 16,\quad [3,7]\to 0. $

Daher beträgt die gesuchte XOR-Summe $(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.