LQDOJ Cup 2024 - Round #2 - Truy vấn thay đổi

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2300 (p) Thời gian: 3.0s Bộ nhớ: 1G Input: cquery.inp Output: cquery.out

Cho mảng \(a\) gồm \(n\) phần tử \(a_1, a_2, ..., a_n\).

\(m\) thao tác, thao tác thứ \(i\) được biểu diễn bởi bốn số \(l_i\) \(r_i\) \(x_i\) \(y_i\): Với mọi \(j\)\(l_i \leq j \leq r_i\)\(a_j = x_i\), gán \(a_j = x_i + y_i\).

Bạn cần trả lời \(q\) câu hỏi, câu hỏi thứ \(i\) tương ứng với ba số \(p_i\) \(u_i\) \(v_i\): Hãy cho biết giá trị của phần tử ở vị trí \(p_i\) sau khi thực hiện lần lượt các thao tác từ \(u_i\) đến \(v_i\).

Lưu ý: các câu hỏi độc lập với nhau, tức là trước mỗi câu hỏi, mảng \(a\) trở về trạng thái ban đầu.

Input

  • Dòng đầu tiên gồm \(2\) số nguyên dương \(n, m\) \((1 \leq n, m \leq 10^5)\) --- độ dài của mảng \(a\) và số lượng thao tác.
  • Dòng thứ hai gồm \(n\) số nguyên \(a_1, a_2, \ldots, a_n\) \((1 \leq a_i \leq 10^5)\)~-- Giá trị ban đầu của mảng.
  • Dòng thứ \(i\) trong \(m\) dòng tiếp theo gồm bốn số \(l_i, r_i, x_i, y_i\) \((1 \leq l_i \leq r_i \leq m, 1 \leq x_i \leq x_i + y_i \leq 10^5)\) --- Mô tả thao tác thứ \(i\).
  • Dòng tiếp theo chứa số nguyên duy nhất \(1 \leq q \leq 10^5\) --- số lượng câu hỏi.
  • Dòng thứ \(i\) trong \(q\) dòng tiếp theo gồm ba số \(p_i, u_i, v_i (1 \leq p_i \leq n, 1 \leq u_i \leq v_i \leq m)\) --- mô tả câu hỏi thứ \(i\).

Output

  • Gồm \(q\) dòng, dòng thứ \(i\) là câu trả lời cho câu hỏi thứ \(i\).

Scoring

  • Subtask \(1\) (\(25\%\) số điểm): \(n,m,q \leq 5000\).
  • Subtask \(2\) (\(20\%\) số điểm): \(l_i = 1, r_i = n\) với mọi thao tác và \(u_i = 1, v_i = m\) với mọi câu hỏi.
  • Subtask \(3\) (\(23\%\) số điểm): \(n,m \leq 10000, q \leq 10^5\)\(l_i = 1, r_i = n\) với mọi thao tác.
  • Subtask \(4\) (\(17\%\) số điểm): \(n,m \leq 5 \times 10^4, a_i \leq 32\)\(x_i \leq x_i + y_i \leq 32\).
  • Subtask \(5\) (\(15\%\) số điểm): Không có ràng buộc gì thêm.

Example

Test 1
Input
10 5
2 5 3 2 5 6 7 4 3 6
5 8 5 40
2 6 5 4
1 4 5 2
2 8 7 1
2 10 9 3
2
2 1 5
2 3 4
Output
12
8
Note

Có hai câu hỏi:

  • Câu hỏi đầu tiên, ban đầu mảng \(a = [2, 5, 3, 2, 5, 6, 7, 4, 3, 6]\):

    • Sau thao tác đầu tiên, \(a = [2, 5, 3, 2, 45, 6, 7, 4, 3, 6]\).
    • Sau thao tác thứ hai, \(a = [2, 9, 3, 2, 45, 6, 7, 4, 3, 6]\).
    • Sau thao tác thứ ba, \(a = [2, 9, 3, 2, 45, 6, 7, 4, 3, 6]\).
    • Sau thao tác thứ tư, \(a = [2, 9, 3, 2, 45, 6, 8, 4, 3, 6]\).
    • Sau thao tác thứ năm, \(a = [2, 12, 3, 2, 45, 6, 8, 4, 3, 6]\).
    • Kết quả của câu hỏi này là \(a_2 = 12\).
  • Ở câu hỏi thứ \(2\), ban đầu mảng \(a = [2, 5, 3, 2, 5, 6, 7, 4, 3, 6]\):

    • Thao tác thứ \(1, 2\)\(5\) không được xét, vì câu hỏi chỉ yêu cầu xét các thao tác từ \(3\) đến \(4\).
    • Sau khi thực hiện thao tác thứ ba, \(a = [2, 7, 3, 2, 5, 6, 7, 4, 3, 6]\).
    • Sau khi thực hiện thao tác thứ tư, \(a = [2, 8, 3, 2, 5, 6, 8, 4, 3, 6]\).
    • Kết quả của câu hỏi này là \(a_2 = 8\).
Test 2
Input
10 10
3 1 3 1 4 1 1 4 6 3
2 7 5 6
2 10 5 7
2 10 5 7
1 6 4 7
2 8 4 6
2 9 5 6
7 9 5 6
3 10 7 5
8 10 5 7
5 10 7 5
10
5 5 9
5 3 7
5 8 9
5 2 7
8 2 7
9 1 9
8 1 1
9 4 10
8 2 8
8 2 7
Output
10
11
4
11
10
6
4
6
10
10

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: