Tìm tổng của mãng

Xem PDF



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: 1300 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Bạn được cho một mảng gồm \(n\) phần tử, mỗi phần tử ban đầu đều bằng \(0\). Bạn sẽ phải thực hiện \(m\) thao tác thuộc \(2\) loại sau:

  • Loại 1: 0 l r k - nâng các phần tử từ vị trí \(l\) đến \(r\) lên \(k\) đơn vị.
  • Loại 2: 1 l r - in ra tổng các phần tử trong đoạn từ \(l\) đến \(r\).

Input

  • Dòng đầu gồm hai số \(n\)\(m\), lần lượt là số phần tử của mảng và số thao tác cần thực hiện (\(1 \le n \le 10^5, 1 \le m \le 10^5\)).
  • \(m\) dòng sau, mỗi dòng thể hiện một thao tác như trên. Dữ liệu đảm bảo (\(1 \le l \le r \le n, 1 \le k \le 10^7\)).

Output

  • Với mỗi truy vấn loại 2, in ra câu trả lời tương ứng trên một dòng.

Example

Test 1

Input
6 4
0 1 3 2
1 1 2
0 2 6 4
1 1 3
Output
4
14
Note
  • Ban đầu: \([0, 0, 0, 0, 0, 0]\)
  • Thao tác 1 (0 1 3 2): Tăng đoạn \([1, 3]\) thêm \(2 \Rightarrow [2, 2, 2, 0, 0, 0]\)
  • Thao tác 2 (1 1 2): Tổng đoạn \([1, 2]\)\(2 + 2 = 4\).
  • Thao tác 3 (0 2 6 4): Tăng đoạn \([2, 6]\) thêm \(4 \Rightarrow [2, 6, 6, 4, 4, 4]\)
  • Thao tác 4 (1 1 3): Tổng đoạn \([1, 3]\)\(2 + 6 + 6 = 14\).

Bình luận

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

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