Chuyển nước (C.P.VNOI 2021 LMH R4)

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1900 Thời gian: 2.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Các bé học sinh trường mầm non SuperKids tò rò say mê với các trò chơi đòi hỏi tư duy thuật toán chuyên nghiệp. Nhân dịp đến thăm trường, giáo sư X bày ra một trò chơi cho các bạn nhỏ tại đây.

Ban đầu, người chơi được cho \(n\) thùng nước đánh số từ \(1\) tới \(n\). Thùng thứ \(i\)\(a_i\) lít nước. Người chơi được quyền múc một lượng nước bất kỳ từ một thùng chuyển sang thùng liền sau (chuyển từ thùng \(i\) sang thùng \(i + 1\) với \(i\) tùy chọn thỏa mãn \(1 \leq i < n\)). Năng lượng tiêu tốn cho thao tác này đúng bằng lượng nước được chuyển (có thể không phải là số nguyên).

Nhiệm vụ của người chơi là phải làm cho lượng nước trong các thùng sắp xếp thứ tự không giảm, tức là:

\[a_1 \leq a_2 \leq ... \leq a_n\]

Yêu cầu

Hãy tìm phương án chơi sao cho tổng năng lượng tiêu tốn là ít nhất.

Input

  • Dòng 1 chứa số nguyên dương \(n \leq 10^6\)
  • Dòng 2 chứa \(n\) số nguyên không âm \(a_1, a_2, ..., a_n\) (với: \(a_i \leq 10^6\)) cách nhau bởi dấu cách

Output

  • Ghi ra một số thực duy nhất với 1 chữ số sau dấu chấm thập phân là tổng năng lượng tiêu tốn nếu các bé chơi theo phương án của bạn

Example

Test 1

Input
6
1 3 0 0 3 0
Output
4.5
Note

Ta sẽ chuyển nước để được lượng nước trong các thùng là \(1.0,1.0,1.0,1.0,1.5,1.5\)

  • Chuyển 2 lít từ thùng 2 sang thùng 3
  • Chuyển 1 lít từ thùng 3 sang thùng 4
  • Chuyển 1.5 lít từ thùng 5 sang thùng 6

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.