만드는 중입니다

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

박테리아 균형 맞추기

시간 제한2초메모리 제한1024 MB

요약
N개 구역의 세균 편차를 모두 0으로 맞추는 데 필요한 최소 살포 횟수를 구합니다. 살포기는 오른쪽 끝 구역에서 거리에 따라 줄어드는 양을 더하거나 뺍니다.
난이도

보통10점 중 6점

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

문제

Farmer John은 일렬로 놓인 NN (1≤N≤2⋅1051\le N\le 2\cdot 10^5)개의 풀밭 조각을 가지고 있다. 조각 ii의 박테리아 수준은 건강한 수준과 aia_i만큼 차이가 난다 (−1015≤ai≤1015-10^{15}\le a_i \le 10^{15}). 예를 들어 ai=−3a_i = -3이면 조각 ii는 정상보다 3 낮으므로, 건강해지려면 박테리아를 정확히 3 단위 더 넣어야 한다.

Farmer John은 모든 조각을 건강한 수준으로 맞추려 한다. 박테리아를 추가하는 살충제와 제거하는 살충제, 두 종류가 있다. 어느 쪽을 뿌리든 그는 가장 오른쪽 조각 NN에 서서 분무기의 세기 LL (1≤L≤N1 \leq L \leq N)을 고른다.

분무기는 Farmer John에게 가까운 조각일수록 큰 영향을 주고, 멀어질수록 영향이 약해진다. 박테리아를 추가하는 살충제를 고르면 조각 NN에 LL 단위, 조각 N−1N-1에 L−1L-1 단위, 조각 N−2N-2에 L−2L-2 단위가 더해지는 식이다. 분무기가 닿지 않는 조각 1…N−L1 \ldots N-L에는 아무것도 더해지지 않는다. 박테리아를 제거하는 살충제도 같은 방식이지만, 더하는 대신 뺀다.

모든 조각이 건강한 박테리아 수준에 도달하도록, Farmer John이 살충제를 뿌려야 하는 최소 횟수를 구하라. 답은 최대 10910^9임이 보장된다.

값이 매우 커질 수 있으므로 C/C++의 long long처럼 64비트 정수형을 사용해야 한다.

입력

첫째 줄에 NN이 주어진다.

둘째 줄에는 풀밭 각 조각의 초기 박테리아 수준을 나타내는 정수 NN개 a1…aNa_1 \dots a_N이 주어진다.

출력

모든 조각의 박테리아 수준을 건강한 수준으로 맞추는 데 필요한 살충제 뿌리기의 최소 횟수를 출력한다.

예제2

  1. 예제 1

    입력
    2
    -1 3
    
    예상 출력
    6
    
  2. 예제 2

    입력
    5
    1 3 -2 -7 5
    
    예상 출력
    26