QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 512 MB Total points: 100 Hackable ✓

#23637. Thủy triều

Statistics

Cừu Nhỏ sống ở một làng chài nhỏ bên vịnh hẹp. Cậu đã ghi lại độ cao mực nước biển trong $n$ ngày liên tiếp; vào ngày thứ $i$ ($1\leq i\leq n$), độ cao mực nước biển là một số nguyên dương $h_i$.

Đối với một khoảng thời gian được chọn từ ngày thứ $l$ đến ngày thứ $r$ (bao gồm cả $l$ và $r$), đặt:

  • $M$ là giá trị lớn nhất của độ cao mực nước biển trong khoảng thời gian này;
  • $A$ là chỉ số của ngày đầu tiên trong $[l,r]$ mà độ cao mực nước biển đạt tới $M$;
  • $B$ là chỉ số của ngày cuối cùng trong $[l,r]$ mà độ cao mực nước biển đạt tới $M$.

Khi đó, giá trị thủy triều của khoảng thời gian này được định nghĩa là $M\cdot(B-A)$. Lưu ý rằng nếu giá trị lớn nhất của độ cao mực nước biển chỉ xuất hiện một lần thì $A=B$, và giá trị thủy triều khi đó bằng $0$.

Cừu Nhỏ sẽ đặt $q$ câu hỏi trực tuyến (online). Mỗi câu hỏi sẽ cho $l$ và $r$, yêu cầu bạn chọn một khoảng thời gian con $[x,y]$ trong $[l,r]$ (tức là $l\leq x\leq y\leq r$) sao cho giá trị thủy triều của khoảng thời gian đó là lớn nhất.

Dữ liệu vào

Dòng đầu tiên chứa hai số nguyên $n$ và $q$ ($1\leq n\leq 5\times 10^5$, $1\leq q\leq 3\times10^6$), lần lượt biểu thị tổng số ngày quan sát và số lượng truy vấn.

Dòng thứ hai chứa $n$ số nguyên dương $h_1, h_2, \dots, h_n$ ($1\leq h_i\leq 10^9$), lần lượt biểu thị độ cao mực nước biển của từng ngày.

Dòng thứ ba chứa hai số nguyên $l_1$ và $r_1$ ($1\leq l_1\leq r_1\leq n$), biểu thị đoạn của truy vấn đầu tiên.

Đối với truy vấn thứ $i$ ($2\leq i\leq q$), giả sử $lastans$ là đáp án của truy vấn trước đó, đặt: $$ 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 $$

Khi đó truy vấn thứ $i$ thực tế là $l_i=\min(a_i,b_i)$, $r_i=\max(a_i,b_i)$.

Dữ liệu ra

Gọi $ans_i$ là đáp án của truy vấn thứ $i$, hãy in ra một số nguyên: $(ans_1+1) \oplus (ans_2+2) \oplus \cdots \oplus (ans_q+q)$.

Lưu ý rằng $\oplus$ biểu thị phép toán XOR bit.

Ví dụ

Dữ liệu vào 1

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

Dữ liệu ra 1

1

Ghi chú

Đoạn của truy vấn đầu tiên là $[2,7]$, khoảng thời gian tối ưu là $[2,4]$, trong đó độ cao mực nước biển lớn nhất là $8$. Trong khoảng thời gian $[2,4]$, độ cao $8$ xuất hiện lần đầu vào ngày thứ $2$ và xuất hiện lần cuối vào ngày thứ $4$, vì vậy giá trị thủy triều của khoảng thời gian này là $8\times(4-2)=16$.

Các truy vấn được sinh ra tiếp theo và đáp án tương ứng lần lượt là: $ [2,3]\to 0,\quad [3,6]\to 0,\quad [2,4]\to 16,\quad [3,7]\to 0. $

Do đó tổng XOR cần tìm là $(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.