Tổng bình phương trên cây

Xem PDF

Điểm: 600 (p) Thời gian: 1.0s Bộ nhớ: 500M Input: bàn phím Output: màn hình

Cho dãy \(a\) chứa \(N\) số nguyên. Cần phải thực hiện \(Q\) truy vấn thuộc \(3\) loại:

  • \(2\) \(u\) \(v\): In ra tổng bình phương của các phần tử trong đoạn \([u, v]\) của mảng \(a\).
  • \(1\) \(u\) \(v\) \(x\): Tăng tất cả các phần tử của mảng \(a\) trong đoạn \([u, v]\) lên \(x\) đơn vị \((|x| \leq 1000)\).
  • \(0\) \(u\) \(v\) \(x\): Đặt \(x\) là giá trị cho tất cả các phần tử của mảng \(a\) trong đoạn \([u, v]\) \((|x| \leq 1000)\).

Input

  • Dòng đầu chứa hai số \(N\) \((N \leq 100000)\)\(Q\) \((Q \leq 100000)\), với \(N\) là độ dài của dãy \(a\)\(Q\) là số lượng truy vấn.
  • Dòng tiếp theo chứa \(N\) số \(a_{1}, a_{2}, \ldots, a_{N}\) \((|a_{i}| \leq 1000)\).
  • \(Q\) dòng tiếp theo, mỗi dòng chứa một truy vấn, mỗi truy vấn thuộc một trong \(3\) dạng:
    • \(2\) \(u\) \(v\)
    • \(1\) \(u\) \(v\) \(x\)
    • \(0\) \(u\) \(v\) \(x\)

Output

  • In ra kết quả của các truy vấn.

Example

Test 1

Input
5 5
2 3 1 5 4
2 3 5
1 1 5 -2
2 1 4
0 2 4 3
2 1 5 
Output
42
11
31
Note

Sau mỗi truy vấn thay đổi, dãy \(a\) trông như sau:

  • Lúc đầu, ta có \(a = \{2, 3, 1, 5, 4\}\)
  • Sau truy vấn \(2\), \(a = \{0, 1, -1, 3, 2\}\)
  • Sau truy vấn \(4\), \(a = \{0, 3, 3, 3, 2\}\)

Bình luận

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