trang chủ / đề bài / bitbasic

Cộng đoạn, tổng đoạn

Đề bài

Mô tả

Cho mảng a1,a2,…,an và q thao tác. Có hai loại thao tác:

  • Cộng đoạn: 1 l r v — với mỗi i∈[l,r] tăng ai thêm v.
  • Hỏi tổng đoạn: 2 l r — in ra al+al+1+…+ar.

Dữ liệu vào

  • Dòng đầu: hai số nguyên n và q.
  • Dòng thứ hai: n số nguyên a1,…,an.
  • q dòng tiếp theo, mỗi dòng mô tả một thao tác:
    • 1 l r v: cộng v vào al,…,ar.
    • 2 l r: hỏi tổng đoạn [l,r].

Dữ liệu ra

Với mỗi thao tác loại 2 in một dòng — tổng đoạn tương ứng.

Ràng buộc

  • 1≤n,q≤2·105
  • 1≤l≤r≤n
  • |ai|,|v|≤109
  • Giá trị các phần tử và tổng đoạn nằm trong phạm vi số nguyên có dấu 64-bit.

Ví dụ

Input Output Giải thích
5 5
1 2 3 4 5
2 1 5
1 2 4 10
2 1 5
1 1 5 -3
2 2 3
15
45
19
Mảng ban đầu là 1,2,3,4,5 với tổng 15. Sau thao tác 1 2 4 10 mảng thành 1,12,13,14,5, tổng 45. Sau thao tác 1 1 5 −3 mảng thành −2,9,10,11,2; tổng đoạn [2,3]=9+10=19.
1 3
7
2 1 1
1 1 1 5
2 1 1
7
12
Mảng một phần tử. Đầu tiên hỏi tổng đoạn [1,1]=7. Sau khi cộng 5, phần tử thành 12.

Ghi chú

  • Tổng đoạn có thể âm và rất lớn về độ lớn; dùng long long (C++) hoặc số nguyên Python.
  • Mảng dùng chỉ số 1.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0