벼룩 시장

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

보통5그리디누적 합배열면접 대비아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

벼룩시장에서 사람들이 벼룩을 사고판다. 사려는 벼룩의 총합과 팔려는 벼룩의 총합은 항상 같다. 사람들은 한 줄로 서 있고, 이웃한 두 사람 사이의 거리는 모두 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 (1N1000001 \le N \le 100000)이 주어진다.

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

출력

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