trang chủ / đề bài / balancer

Cân bằng que diêm

Đề bài

Mô tả

Petya có k que diêm được đặt trong n hộp diêm xếp thành một hàng từ trái sang phải. Số k luôn chia hết cho n.

Petya muốn mọi hộp đều chứa cùng một số que diêm. Trong một lần di chuyển, cậu ấy lấy đúng một que diêm từ một hộp và bỏ sang một hộp kề bên (hộp liền trái hoặc liền phải). Chuyển một que diêm đi xa hơn một hộp vì thế tốn nhiều lần di chuyển.

Hãy tính số lần di chuyển ít nhất để tất cả các hộp có số que diêm bằng nhau.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là số hộp diêm.
  • Dòng thứ hai chứa n số nguyên không âm, số thứ i là số que diêm trong hộp thứ i.

Dữ liệu ra

In ra một số nguyên duy nhất là tổng số lần di chuyển ít nhất.

Ràng buộc

  • 1≤n≤50000
  • 0≤ai≤109
  • Tổng số que diêm chia hết cho n.

Ví dụ

Input Output Giải thích
6
1 6 2 5 3 7
12 Tổng là 24, mỗi hộp cần 4 que. Lượng dư (thiếu) tích luỹ qua 6 ranh giới lần lượt là −3,−1,−3,−2,−3,0, nên chi phí là 3+1+3+2+3+0=12.
6
0 0 0 6 6 6
27 Mỗi hộp cần 3 que. Ba hộp đầu đều rỗng nên phải kéo 3,6,9 que qua ba ranh giới đầu, rồi 6,3 que qua hai ranh giới tiếp theo: 3+6+9+6+3=27.
2
0 1000000000
500000000 Cần chuyển nửa số que từ hộp phải sang hộp trái, mỗi que tốn đúng một lần di chuyển. Đáp số vượt quá 231 nên phải dùng số nguyên 64 bit.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0