Chia mảng thành k đoạn

Đề bài

Mô tả

Với một hằng số m cho trước, độ đẹp của một mảng có ít nhất m phần tử được định nghĩa là tổng của m phần tử lớn nhất trong mảng đó.

Ví dụ, với x=[4,3,1,5,2] và m=3, ba phần tử lớn nhất của x là 5,4,3 nên độ đẹp của x bằng 5+4+3=12.

Cho mảng a1,a2,…,an, hằng số m và số nguyên k. Hãy chia mảng a thành đúng k đoạn con liên tiếp sao cho:

  • Mỗi phần tử của a thuộc đúng một đoạn.
  • Mỗi đoạn có ít nhất m phần tử.
  • Tổng độ đẹp của k đoạn là lớn nhất có thể.

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

  • Dòng đầu in ra tổng độ đẹp lớn nhất.
  • Dòng thứ hai in ra k−1 số nguyên p1,p2,…,pk−1 với 1≤p1<p2<…<pk−1<n, mô tả cách chia: đoạn thứ nhất gồm các phần tử từ vị trí 1 đến p1, đoạn thứ hai gồm các phần tử từ p1+1 đến p2, ..., đoạn thứ k gồm các phần tử từ pk−1+1 đến n.

Nếu có nhiều cách chia tối ưu, in ra bất kỳ cách nào.

Ràng buộc

  • 2≤n≤2·105
  • 1≤m, 2≤k, m·k≤n
  • −109≤ai≤109

Ví dụ

Input Output Giải thích
9 2 3
5 2 5 2 4 1 1 3 2
21
2 4
Cách chia [5, 2], [5, 2], [4, 1, 1, 3, 2] cho độ đẹp 7+7+7=21. Cách chia [5, 2, 5], [2, 4], [1, 1, 3, 2] cũng cho 10+6+5=21 nên cũng được chấp nhận.
6 1 4
4 1 3 2 2 3
12
1 3 4
Với m=1, độ đẹp của một đoạn là phần tử lớn nhất của đoạn. Cách chia [4], [1, 3], [2], [2, 3] cho 4+3+2+3=12.
2 1 2
-1000000000 1000000000
0
1
Chỉ có một cách chia duy nhất, tổng độ đẹp bằng −109+109=0. Giá trị âm vẫn bắt buộc phải nằm trong một đoạn nào đó.

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