Nối dây thừng

Xem dạng PDF

Gửi bài giải

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

Nguồn bài:
HungTV
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Bạn có ~N~ sợi dây thừng với độ dài khác nhau. Bạn cần nối tất cả chúng lại thành một sợi dây thừng duy nhất. Mỗi lần nối 2 sợi dây, chi phí bạn phải bỏ ra bằng tổng độ dài của 2 sợi dây đó.

Hãy tìm cách nối sao cho tổng chi phí bỏ ra là nhỏ nhất.

Dữ liệu

  • Dòng đầu tiên chứa số nguyên dương ~N~ (~1 \le N \le 10^5~).
  • Dòng thứ hai chứa ~N~ số nguyên dương ~L_1, L_2, ..., L_N~ (~1 \le L_i \le 10^6~) là độ dài của các sợi dây thừng.

Kết quả

In ra một số nguyên duy nhất là tổng chi phí nối dây thừng nhỏ nhất. (Lưu ý: Kết quả có thể vượt quá giới hạn số nguyên 32-bit, hãy sử dụng kiểu dữ liệu 64-bit).

Ví dụ

Input
4
4 3 2 6
Output
29
Giải thích
  • Bước 1: Chọn 2 sợi ngắn nhất là 2 và 3 để nối. Chi phí = 5. Các sợi dây còn lại: [4, 6, 5].
  • Bước 2: Chọn 2 sợi ngắn nhất là 4 và 5 để nối. Chi phí = 9. Các sợi dây còn lại: [6, 9].
  • Bước 3: Nối 2 sợi cuối cùng 6 và 9. Chi phí = 15. Còn 1 sợi duy nhất.
  • Tổng chi phí = 5 + 9 + 15 = 29.

Bình luận

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


Không có bình luận tại thời điểm này.