Sereja và các phép đổi chỗ

Đề bài

Mô tả

Cho một mảng a gồm n số nguyên a1,a2,…,an.

Với một mảng bất kỳ, ta định nghĩa giá trị m(a) là tổng lớn nhất của một đoạn con liên tiếp không rỗng:

m(a)=max1≤i≤j≤n(ai+ai+1+⋯+aj)

Một thao tác đổi chỗ (swap) gồm: chọn hai chỉ số i≠j rồi hoán đổi giá trị của ai và aj.

Bạn được phép thực hiện nhiều nhất k thao tác đổi chỗ. Hãy tìm giá trị m(a) lớn nhất có thể đạt được.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và 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ị m(a) lớn nhất có thể đạt được sau khi thực hiện không quá k thao tác đổi chỗ.

Ràng buộc

  • 1≤n≤200
  • 1≤k≤10
  • −1000≤ai≤1000

Ví dụ

Input Output Giải thích
5 10
-1 -1 -1 -1 -1
-1 Mọi phần tử đều bằng −1, đổi chỗ không thay đổi gì. Đoạn con tốt nhất là một phần tử đơn lẻ, cho tổng −1.
10 2
10 -1 2 2 2 2 2 2 -1 10
32 Chọn đoạn gồm 8 phần tử đầu (tổng 21), rồi đổi số 10 ở cuối mảng vào thay cho phần tử −1 trong đoạn: tổng tăng thêm 11 thành 32.

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