Chia nhóm

Xem dạng PDF

Gửi bài giải


Điểm: 0,65 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

Nguồn bài:
Ðược add lên bởi canhteo
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho ~N~ số nguyên dương ~A_1, A_2, ..., A_N~. Mỗi số có giá trị không vượt quá ~N~.

Yêu cầu:

Hãy chia ~N~ số này thành một số nhóm sao cho:

  • Mỗi nhóm là một dãy các số liên tiếp.
  • Trọng số của mỗi nhóm được tính theo công thức: Bình phương của số giá trị khác nhau trong nhóm đó.

Ví dụ:

  • ~1\ 2\ 3~ ~\rightarrow~ số giá trị khác nhau bằng ~3~, trọng số ~= 9~.
  • ~1\ 2\ 1~ ~\rightarrow~ số giá trị khác nhau bằng ~2~, trọng số ~= 4~.
  • ~1\ 1\ 1~ ~\rightarrow~ số giá trị khác nhau bằng ~1~, trọng số ~= 1~.

Trọng số của dãy số bằng Tổng trọng số của tất cả các nhóm. Hãy tìm cách chia sao cho Tổng trọng số đạt giá trị nhỏ nhất.

Input

Dòng ~1~: Gồm ~2~ số ~N~ và ~M~ - Số lượng số và số giá trị khác nhau trong dãy.

Dòng ~2~ ...~N+1~: Mỗi dòng chứa một số nguyên.

Output

Trọng số nhỏ nhất của dãy số.

Sample Input

13 4
1
2
1
3
2
2
3
4
3
4
3
1
4

Sample Output

11

Note

Giải thích: Chúng ta sẽ chia dãy số thành ~8~ nhóm

  • ~4~ nhóm đầu tiên mỗi nhóm chứa một số duy nhất.
  • nhóm thứ ~5~ chứa hai số nguyên đều có giá trị là ~2~.
  • nhóm thứ ~6~ gồm các số từ ~7~ ~\rightarrow~ ~12~: ~(3~, ~4~, ~3~, ~4~, ~3)~
  • ~2~ nhóm cuối cùng mỗi nhóm gồm ~1~ số duy nhất.

Kết quả là ~1^{2}~ + ~1^{2}~ + ~1^{2}~ + ~1^{2}~ + ~1^{2}~ + ~2^{2}~ + ~1^{2}~ + ~1^{2} =~ ~11~.

Giới hạn: ~N \le 40000~.


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    meanthai  đã bình luận lúc 22, Tháng 2, 2023, 5:23

    chia mỗi số 1 nhóm hã ông =)))))


  • 2
    hphuonghehe  đã bình luận lúc 29, Tháng 11, 2022, 9:06

    test có vẻ hơi yếu, như sol của mình nếu các phần tử bằng nhau thì sẽ chạy trong O(n^2)


    • 0
      khai99  đã bình luận lúc 29, Tháng 11, 2022, 14:30

      tuyệt!


  • -9
    YinLin  đã bình luận lúc 31, Tháng 8, 2022, 5:33

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -19
    phanvanhuy  đã bình luận lúc 7, Tháng 6, 2021, 9:43

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


    • -3
      RangDong100years  đã bình luận lúc 6, Tháng 10, 2021, 14:20

      có lớn nhất thì nó là 35 nha :v


    • 1
      ngfam  đã bình luận lúc 7, Tháng 6, 2021, 10:08

      Bạn đọc kỹ lại đề nhé!