만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

벼룩 시장

면접 대비

시간 제한1초메모리 제한128 MB

요약
일직선 위에 놓인 사람들의 벼룩 공급량과 수요량이 주어질 때, 모든 배달을 마치는 최소 비용을 구한다.
난이도

보통10점 중 5점

유형
그리디, 누적 합, 배열
정답자
아직 제출이 없습니다

문제

벼룩시장에서 사람들이 벼룩을 사고판다. 사려는 벼룩의 총합과 팔려는 벼룩의 총합은 항상 같다. 사람들은 한 줄로 서 있고, 이웃한 두 사람 사이의 거리는 모두 1이다. 아무도 자리를 옮기지 않으며, 벼룩 배달은 모두 배달부 기영이가 맡는다. 두 사람 사이에 벼룩을 배달하는 비용은 (배달한 벼룩의 수) ×\times (두 사람 사이의 거리)이다. 사려는 사람에게 벼룩을 전부 배달했을 때 기영이가 치르는 비용의 최솟값을 구하여라.

위 그림은 다섯 사람이 순서대로 500, -200, -400, 50, 50을 거래하는 경우다. 3번 사람은 벼룩 400개를 사려 하고, 1번 사람은 500개를 팔려 한다. 3번 사람이 1번 사람에게서 400개를 사면 거리가 2이므로 비용은 2×400=8002 \times 400 = 800이다. 기영이가 1번에서 2번으로 200개를 배달하고 1번, 4번, 5번에서 3번으로 각각 300개, 50개, 50개를 배달하면 비용은 200+300×2+50+50×2=950200 + 300 \times 2 + 50 + 50 \times 2 = 950이고, 이보다 싸게 배달하는 방법은 없다.

입력

첫째 줄에 사람의 수 NN (1≤N≤1000001 \le N \le 100000)이 주어진다.

둘째 줄에 각 사람이 거래하려는 벼룩의 수 LL (−1000≤L≤1000-1000 \le L \le 1000)이 서 있는 순서대로 주어진다. LL이 양수이면 벼룩을 파는 사람, 음수이면 사는 사람이고, 0이면 거래하지 않는다. 주어지는 LL을 모두 더하면 0이다.

출력

기영이가 벼룩을 전부 배달하는 최소 비용을 한 줄에 출력한다. 답은 32비트 정수 범위를 넘을 수 있으므로 64비트 정수형을 쓴다.

예제2

  1. 예제 1

    입력
    5
    500 -200 -400 50 50
    
    예상 출력
    950
    
  2. 예제 2

    입력
    6
    1000 1000 1000 -1000 -1000 -1000
    
    예상 출력
    9000