Đ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 mk.

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=lraik·rl+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

  • 1n3·105
  • 1m10
  • 1k109
  • 109ai109

Ví dụ

Input Output Giải thích
7 3 10
2 -4 15 -3 4 8 3
7 Chọn đoạn a3a7: tổng là 153+4+8+3=27, độ dài 5 nên phải trả 10·5/3=20, giá trị 2720=7. Đoạn a3a5 chỉ cho 1610=6, còn a3a6 cho 2420=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 a2a4: 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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0