Đoạn con với chi phí theo nhóm

Đề bài

Mô tả

Cho dãy số nguyên a1,a2,…,an cùng hai số nguyên m và k.

Bạn chọn một đoạn con liên tiếp al,al+1,…,ar của dãy. Giá trị của đoạn được tính bằng

∑i=lrai−k·⌈r−l+1m⌉,

trong đó ⌈x⌉ là số nguyên nhỏ nhất không nhỏ hơn x. Nói cách khác, mỗi khi đoạn dài thêm một nhóm m phần tử (dù nhóm cuối chưa đủ m phần tử) thì phải trả thêm chi phí k.

Đoạn rỗng cũng được phép chọn và có giá trị bằng 0.

Hãy tìm giá trị lớn nhất có thể đạt được.

Dữ liệu vào

  • Dòng đầu chứa ba số nguyên n, m, k.
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an.

Dữ liệu ra

In ra một số nguyên duy nhất là giá trị lớn nhất của một đoạn con liên tiếp (có thể rỗng) của dãy.

Ràng buộc

  • 1≤n≤3·105
  • 1≤m≤10
  • 1≤k≤109
  • −109≤ai≤109

Ví dụ

Input Output Giải thích
7 3 10
2 -4 15 -3 4 8 3
7 Chọn đoạn a3…a7: tổng là 15−3+4+8+3=27, độ dài 5 nên phải trả 10·⌈5/3⌉=20, giá trị 27−20=7. Đoạn a3…a5 chỉ cho 16−10=6, còn a3…a6 cho 24−20=4.
5 2 1000
-13 -4 -9 -20 -11
0 Mọi phần tử đều âm và k rất lớn nên mọi đoạn khác rỗng đều có giá trị âm; đoạn rỗng cho giá trị 0.
4 3 2
1 100 100 100
298 Chọn cả dãy: tổng 301, độ dài 4 nên trả 2·⌈4/3⌉=4, được 297. Tốt hơn là chọn a2…a4: tổng 300, độ dài 3 chỉ trả 2, được 298.

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