#98. Điểm xếp hạng (Mã bài: RATING)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho một dãy số nguyên không âm a gồm n phần tử, đại diện cho độ khó của n kỳ thi. Dãy a được sắp xếp không giảm, tức là a_i \le a_{i+1} với mọi 1 \le i < n .

Với một rating ban đầu là x , khi tham gia một kỳ thi có độ khó a_i , rating mới sẽ được cập nhật thành |x - a_i| .

Bạn cần trả lời q truy vấn. Mỗi truy vấn gồm một rating ban đầu x , và một đoạn [l, r] . Bạn hãy tính rating cuối cùng sau khi tham gia lần lượt các kỳ thi từ l đến r .

Dữ liệu:

  • Dòng đầu tiên chứa số nguyên 𝑇 (1 ≤ 𝑇 ≤ 4) là số thứ tự của subtask chứa test này.
  • Dòng thứ hai chứa hai số nguyên 𝑛 𝑞 (1 ≤ 𝑛, 𝑞 ≤ 3\times 10^5) là số kỳ thi và số truy vấn.
  • Dòng thứ ba chứa 𝑛 số nguyên 𝑎_1, 𝑎_2, … 𝑎_𝑛 (0 ≤ 𝑎_1 ≤ 𝑎_2 ≤ ⋯ ≤ 𝑎_𝑛 ≤ 10^9) là độ khó của các kỳ thi.
  • Trong 𝑞 dòng cuối cùng, dòng thứ 𝑖 chứa ba số nguyên 𝑥_𝑖, 𝑙_𝑖 𝑟_𝑖 (1 ≤ 𝑙_𝑖 ≤ 𝑟_𝑖 ≤ 𝑛, 0 ≤ |𝑥_𝑖| ≤ 10^9) tương ứng với rating ban đầu và đoạn kỳ thi cần xét trong truy vấn thứ 𝑖 .

Kết quả: Gồm 𝑞 dòng, dòng thứ 𝑖 là rating cuối cùng sau khi tham gia hết các kỳ thi trong truy vấn thứ 𝑖 .

Ví dụ:

Dữ liệu:

1
5 4
1 7 10 20 100
10 1 3
10 3 4
137 1 5
2696 1 5

Kết quả:

8
20
1
2558

Giải thích: Trong truy vấn đầu tiên, rating ban đầu là 10 và tham gia các kỳ thi có độ khó là 1, 7, 10 . Rating thay đổi như sau: 10 \xrightarrow{|10-1|} 9 \xrightarrow{|9-7|} 2 \xrightarrow{|2-10|} 8 .

Giới hạn:

  • Subtask \#1 (25\%\text{ số điểm}): 𝑛, 𝑞 ≤ 5000 ;
  • Subtask \#2 (25\%\text{ số điểm}): 𝑎_𝑖 ≤ 1000 𝑥_1 = 𝑥_2 = ⋯ = 𝑥_𝑞 = 10^9 ;
  • Subtask \#3 (25\%\text{ số điểm}): 𝑎_1 = 𝑎_2 = ⋯ = 𝑎_𝑛 ;
  • Subtask \#4 (25\%\text{ số điểm}): Không có ràng buộc gì thêm.