trang chủ / đề bài / dhbb15_10_express

Biểu thức

Đề bài

Mô tả

Một dãy gồm n số nguyên không âm a1,a2,…,an được viết thành một hàng ngang, giữa hai số liên tiếp có một khoảng trắng, như vậy có tất cả (n−1) khoảng trắng. Người ta muốn đặt k dấu cộng và (n−1−k) dấu trừ vào (n−1) khoảng trắng đó để nhận được một biểu thức có giá trị lớn nhất. Thứ tự các số được giữ nguyên; trước a1 không có dấu nên a1 luôn được cộng vào biểu thức.

Ví dụ, với dãy gồm 5 số nguyên 28,9,5,1,69 và k=2 thì cách đặt 28+9−5−1+69 là biểu thức có giá trị lớn nhất.

Yêu cầu: Cho dãy gồm n số nguyên không âm a1,a2,…,an và số nguyên dương k, hãy tìm cách đặt k dấu cộng và (n−1−k) dấu trừ vào (n−1) khoảng trắng để nhận được một biểu thức có giá trị lớn nhất.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên dương n,k (k<n).
  • Dòng thứ hai chứa n số nguyên không âm a1,a2,…,an (ai≤106).

Dữ liệu ra

In ra một số nguyên là giá trị lớn nhất của biểu thức đặt được (giá trị này có thể âm).

Ràng buộc

  • 2≤n≤105, 1≤k<n.
  • 0≤ai≤106.

Subtasks

  • Có 50% số test ứng với 50% số điểm có n≤105 và k=1.
  • Có 50% số test còn lại ứng với 50% số điểm có n≤105.

Ví dụ

Input Output Giải thích
5 2
28 9 5 1 69
100 28+9−5−1+69=100.
4 1
3 10 2 7
4 Ví dụ bổ sung. 3+10−2−7=4.
4 2
1 8 9 7
11 Ví dụ bổ sung. a1=1 nhỏ nhất nhưng vẫn luôn mang dấu cộng: 1+8+9−7=11.
3 2
0 4 5
9 Ví dụ bổ sung. k=n−1, mọi khoảng trắng đều là dấu cộng: 0+4+5=9.

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