Bedao Regular Contest 14 - KSUM

Xem dạng PDF

Gửi bài giải


Điểm: 0,90 (OI)
Giới hạn thời gian: 5.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Xét một tập ~S~ gồm ~k~ phần tử, kí hiệu là ~S_k=\{s_1,s_2,\dots,s_k\}~, định nghĩa ~f(S_k)=s_1\cdot s_2 \cdot \ldots \cdot s_k~ là giá trị của tập ~S_k~.

Cho một dãy số gồm ~n~ số nguyên dương ~a_1,a_2,...,a_n~. Với một đoạn ~a[l..r]~, gọi ~g(l,r)=\sum_{S_k \subset \{a_l,a_{l+1},\ldots,a_r\}}f(S_k)~ là giá trị của đoạn con này. Ta sẽ lần lượt thực hiện ~q~ truy vấn trên dãy số đã cho:

  • 1 l r: Tính ~g(l, r)~ - tổng giá trị của các tập con thuộc tập hợp ~\{a_l, a_{l + 1}, \ldots, a_r\}~.

  • 2 i x: Thay đổi ~a_i = x~.

Yêu cầu: Với mỗi truy vấn loại 1, hãy in ra ~g(l, r)~ trong truy vấn tương ứng.

Input

  • Dòng đầu tiên chứa hai số nguyên dương ~n, k~ (~1 \le n \le 10^5, 1 \le k \le 20~).

  • Dòng thứ hai chứa ~n~ số nguyên dương ~a_1, a_2, ..., a_n~ (~1 \le a_i \le 10^9~).

  • Dòng thứ ba chứa số nguyên dương ~q~ (~1 \le q \le 10^5~).

  • ~q~ dòng tiếp theo, mỗi dòng mô tả một truy vấn thuộc một trong hai dạng nêu trên.

  • Trong các truy vấn loại ~1~, ~1\le l\le r\le n~; trong các truy vấn loại 2, ~1\le i \le n~ và ~1\le x \le 10^9~.

Output

  • In ra nhiều dòng, mỗi dòng là đáp án cho truy vấn loại ~1~ tương ứng trong dữ liệu đầu vào. Vì đáp án có thể rất lớn, hãy in ra số dư khi chia cho ~10^9 + 7~.

Scoring

  • Subtask ~1~ (~20~ điểm): ~n, q \le 1000~

  • Subtask ~2~ (~30~ điểm): ~a_i, x \le 2~

  • Subtask ~3~ (~50~ điểm): không có ràng buộc gì thêm.

Sample Input 1

5 2
3 10 3 5 10
4
1 1 4
2 3 4
2 2 6
1 2 4

Sample Output 1

149
74

Notes

Ở test ví dụ trên:

  • Ở truy vấn thứ ~1~, ta được yêu cầu tính ~g(1, 4)~. Đáp án của truy vấn này là ~3 \cdot 10 + 3 \cdot 3 + 3 \cdot 5 + 10 \cdot 3 + 10 \cdot 5 + 3 \cdot 5 = 149~.

  • Ở truy vấn thứ ~2~, ta thực hiện thay đổi ~a_3 = 4~. Lúc này, ~a = [3, 10, 4, 5, 10]~.

  • Ở truy vấn thứ ~3~, ta thực hiện thay đổi ~a_2 = 6~. Lúc này, ~a = [3, 6, 4, 5, 10]~.

  • Ở truy vấn thứ ~4~, ta được yêu cầu tính ~g(2, 4)~. Đáp án của truy vấn này là ~6 \cdot 4 + 6 \cdot 5 + 4 \cdot 5 = 74~.


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • -11
    buu_ske155  đã bình luận lúc 24, Tháng 4, 2023, 3:14

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.