Truy Tìm Kho Báu 3

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

Vượt qua cánh cửa, BabyOrangehoangks7 bước vào một con đường gồm \(n\) viên đá phát sáng. Tuy nhiên, mụ phù thủy liên tục ếm bùa thay đổi "độ nguy hiểm" của con đường. Mụ thực hiện \(Q\) phép thuật. Mỗi phép thuật có thể là cộng thêm độ nguy hiểm vào một đoạn đá từ \(L\) đến \(R\), hoặc yêu cầu họ phải tính tổng độ nguy hiểm từ viên đá \(u\) đến \(v\) để tìm cách bước qua.
Lưu ý: Độ nguy hiểm của \(n\) viên đá lúc đầu đều = 0 và mụ phù thủy có thể giảm độ nguy hiểm nếu \(V\) là số âm

Input

  • Dòng đầu gồm \(n\) viên đá và \(Q\) truy vấn \((n, Q \le 2 \times 10^5)\)
  • \(Q\) dòng tiếp theo, mỗi dòng có định dạng như sau:
  • \(1\) \(L\) \(R\) \(V\): Cộng \(V\) vào đoạn \([L,R]\)
  • \(2\) \(u\) \(v\): Tính tổng độ nguy hiểm đoạn \([u,v]\) (modulo \(10^9\) + 7)

Output

  • Mỗi lần yêu cầu tính tổng độ nguy hiệm, đưa ra một số là đáp án yêu cầu.

Example

Test 1

Input
5 4
1 1 3 5
2 2 4
1 3 5 2
2 1 5
Output
10
21
Note

Ban đầu, độ nguy hiểm của 5 viên đá là 0: [0, 0, 0, 0, 0]
1: Cộng 5 điểm nguy hiểm vào viên đá thứ 1 tới viên thứ 3. Độ nguy hiểm trở thành [5, 5, 5, 0, 0]
2: Tính tổng độ nguy hiểm từ viên thứ 2 đến thứ 4: 5 + 5 + 0 = 10. In ra 10
3: Công 2 điểm nguy hiểm vào viên thứ 3 đến thứ 5: [5, 5, 7, 2, 2]
4: Tính tổng độ nguy hiểm từ viên thứ 1 đến thứ 5: 5 + 5 + 7 + 2 + 2 = 21. In ra 21

Test 2

Input
5 8
1 1 5 1000000000
2 2 4
1 2 3 -2000000000
2 1 5
2 2 3
1 3 5 500000005
2 1 4
2 3 5
Output
999999986
1000000000
14
3
500000001

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: