Chia nhóm (THT B Vòng KVMN 2022)

Xem PDF

Điểm: 100 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Trong buổi giao lưu giữa các thí sinh của kì thi Tin học trẻ, có học sinh xếp thành một hàng, học
sinh đứng thứ \(i(1 \leq i \leq n)\) đến từ tỉnh có mã là số nguyên \(c_i(1 \leq c_i \leq 63)\). Ban tổ chức muốn
tách hàng để nhận được \(g\) nhóm học sinh tham gia một trò chơi. Cụ thể, Ban tổ chức cần chọn ra \(g - 1\) điểm cắt \(1 < k_1 < k_2 ... < k_{g-1} < n\), khi đó các bạn từ đầu hàng đến bạn đứng thứ \(k_1\) sẽ xếp vào nhóm thứ nhất, các bạn đứng thứ \(k_1 + 1\) đến \(k_2\) sẽ xếp vào nhóm thứ hai,..., bạn đứng thứ \(k_{g-1} + 1\) đến \(n\) xếp vào nhóm thứ \(g\). Độ phong phú của một nhóm được tính bằng số lượng tỉnh khác nhau của học sinh trong nhóm. Để các thí sinh có nhiều cơ hội giao lưu với nhau, Ban tổ chức muốn tìm cách tách hàng \(g\) thành nhóm để tổng độ phong phú của \(g\) nhóm là lớn nhất.

Yêu cầu: Cho dãy số nguyên dương \(c_1, c_2, ..., c_n\) và số nguyên dương \(g\), hãy tìm cách tách hàng thành \(g\) nhóm để tổng độ phong phú của nhóm là lớn nhất.

Input

  • Dòng đầu tiên chứa các số nguyên \(n, g\);
  • Dòng thứ hai chứa n số nguyên dương \(c_1, c_2, ..., c_n\).

Output

  • Ghi ra một dòng chứa một số là tổng độ phong phú của \(g\) nhóm là lớn nhất tìm được.

Scoring

  • Subtask \(1\) (\(25\%\) số điểm): \(n \leq 1000; g = 2\)
  • Subtask \(2\) (\(25\%\) số điểm): \(n \leq 1000; g = 3\)
  • Subtask \(3\) (\(25\%\) số điểm): \(n \leq 1000; g \leq 30\)
  • Subtask \(4\) (\(25\%\) số điểm): \(n \leq 10^5; g \leq 30\)

Example

Test 1

Input
5 2
1 2 1 3 3 
Output
4

Bình luận


  • 4
    huyhau6a2    12:16 p.m. 20 Tháng 7, 2022

    19/20 liên tục mới ac