Cập nhật cấp số cộng trên đoạn

Đề bài

Mô tả

Cho mảng A[1..n] khởi tạo toàn 0. Bạn cần thực hiện q thao tác cập nhật. Mỗi thao tác được mô tả bởi bốn số nguyên l,r,a,d: với mỗi chỉ số i thỏa l≤i≤r, cộng giá trị a+(i−l)·d vào A[i]. Nói cách khác, ta cộng vào đoạn A[l..r] một cấp số cộng có số hạng đầu a, công sai d, và độ dài r−l+1.

Sau khi xử lý xong tất cả các thao tác, in ra giá trị cuối cùng của mảng A.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và q.
  • Mỗi dòng trong q dòng tiếp theo chứa bốn số nguyên l,r,a,d mô tả một thao tác cập nhật.

Dữ liệu ra

In ra n số nguyên A[1],A[2],…,A[n] trên một dòng, các số cách nhau bởi dấu cách.

Ràng buộc

  • 1≤n≤2·105
  • 1≤q≤2·105
  • 1≤l≤r≤n
  • −109≤a,d≤109
  • Giá trị cuối cùng của mỗi phần tử nằm trong kiểu số nguyên 64-bit có dấu.

Ví dụ

Input Output Giải thích
5 2
1 5 1 1
2 4 10 -2
1 12 11 10 5 Thao tác 1 cộng cấp số cộng 1,2,3,4,5 vào A[1..5], được A=(1,2,3,4,5). Thao tác 2 cộng cấp số cộng 10,8,6 vào A[2..4], kết quả A=(1,12,11,10,5).
6 3
2 4 5 0
1 6 0 1
3 3 -100 0
0 6 -93 8 4 5 Thao tác 1 (a=5,d=0) cộng 5,5,5 vào A[2..4], được A=(0,5,5,5,0,0). Thao tác 2 (a=0,d=1) cộng 0,1,2,3,4,5 vào A[1..6], được A=(0,6,7,8,4,5). Thao tác 3 cộng −100 vào A[3], kết quả A=(0,6,−93,8,4,5).

Ghi chú

Giải pháp ngây thơ duyệt từng phần tử trong [l,r] cho mỗi thao tác có độ phức tạp O(n·q) trong trường hợp xấu nhất, sẽ không kịp thời gian. Hãy nghĩ tới việc tổng quát hóa mảng hiệu cho các cập nhật cấp số cộng.

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