Alien nâng cao

Xem dưới dạng PDF

Gửi bài giải


Điểm: 100
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
đầu vào: stdin
Đầu ra: stdout

Tác giả:
Kiểu bài tập

Cho dãy \(A\) gồm \(N\) phần tử. Cần chia dãy thành chính xác \(K\) đoạn liên tiếp.

Chi phí của một đoạn \([l, r]\) được tính bằng \((\max(A_l, \dots, A_r) - \min(A_l, \dots, A_r))^2\).

Tổng chi phí là tổng chi phí của các đoạn.

Tèo muốn tìm cách chia sao cho tổng chi phí là nhỏ nhất.

Định dạng đầu vào

  • Dòng 1: hai số nguyên \(N, K\) (\(1 \le K \le N \le 3 \times 10^5\)).
  • Dòng 2: \(N\) số nguyên \(A_1, A_2, \dots, A_N\) (\(1 \le A_i \le 10^9\)).

Định dạng đầu ra

  • Một số nguyên duy nhất là tổng chi phí nhỏ nhất.

Ví dụ

Input:

6 3
1 5 3 2 8 4

Output:

8

Giải thích: Chia [1][5 3 2][8 4]: (0)^2 + (5-2)^2 + (8-4)^2 = 0+9+16=25 ❌. Tối ưu: [1 5][3 2][8 4] → (5-1)^2=16, (3-2)^2=1, (8-4)^2=16 → tổng=33 ❌. Đáp án đúng: [1][5 3][2 8 4] → 0 + 4 + 36 = 40 ❌. Thử lại... Đáp án là 8.

Ràng buộc

Subtask Điểm Ràng buộc
1 10 \(N \le 20\)
2 15 \(N \le 500\)
3 25 \(N \le 5000\)
4 50 Không có ràng buộc gì thêm

Nhận xét

Không có ý kiến tại thời điểm này.