Biểu thức - HSG 8 2022 - 2023

View as PDF

Points: 5 (p) Time limit: 1.0s Memory limit: 1G Input: express.inp Output: express.out

Một dãy gồm n số nguyên không âm a[1], a[2],..., a[n] đượ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.
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 a[1], a[2],..., a[n] 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.

Ràng buộc:

  • Có 50% số test ứng với 50% số điểm có n ≤ \(10^5\) và k = 1;
  • Có 50% số test còn lại ứng với 50% số điểm có n ≤ \(10^5\), k > 1.

Dữ liệu vào:

từ file văn bản EXPRESS.INP:
- 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 a[1], a[2],..., a[n] (a[i] ≤ \(10^6\) với mọi 1 ≤ i ≤ n).

Dữ liệu ra:

Đưa ra file văn bản EXPRESS.OUT một số nguyên là giá trị của biểu thức đặt được.

Ví dụ 1
Input
5 2
28 9 5 1 69
Output
100

Comments


  • 0
    nio_yuzu    Dec. 25, 2023, 8:49 p.m.

    hướng dẫn:
    gán s=a[1];
    sx tăng dần từ 2 đến n;
    chạy từ n downto 2 :
    cộng a[i] vào s cho đến khi d=k ;khi d>k thì trừ đi
    rồi in ra s
    dễ rứa thoi;-;;;
    ai cần code ib