합의 최소

면접 대비

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

요약
A[i]의 값을 A[i+1]로 바꾸는 연산을 여러 번 써서 수열 전체 합의 최솟값을 구한다.
난이도

보통10점 중 4점

유형
그리디, 배열, 구현, 정렬
정답자
아직 제출이 없습니다

문제

길이가 NN인 정수로 구성된 수열 A_1,A_2,...,A_NA\_1,A\_2,...,A\_N이 주어진다.

당신은 아래 연산을 0번 이상 사용하여 수열의 모든 원소들의 합 ∑_i=1NA_i\displaystyle\sum\_{i=1}^NA\_i를 최소화하려고 한다.

  • 11 이상 N−1N-1 이하인 정수 ii를 선택한 뒤, A_iA\_i의 값을 A_i+1A\_{i+1}로 변경한다.

만들 수 있는 수열의 합의 최솟값을 구해보자.

입력

첫째 줄에 수열의 길이 NN이 주어진다.

둘째 줄에 수열의 원소 A_1,A_2,⋯ ,A_NA\_1,A\_2,\cdots ,A\_N이 공백으로 구분되어 주어진다.

출력

수열의 합의 최솟값을 출력한다.

제한

  • 1≤N≤500,0001\leq N\leq 500\\, 000
  • 1≤A_i≤1,000,0001\le A\_i\le 1\\, 000\\, 000 (1≤i≤N1\le i\le N)
  • 입력으로 주어지는 수는 모두 정수이다.

힌트

정답이 32비트 정수 범위를 넘을 수 있으므로, C/C++에서는 long long, Java에서는 long과 같은 자료형을 사용하는 것을 권장한다.

예제2

  1. 예제 1

    입력
    5
    5 4 3 2 1
    
    예상 출력
    5
    
  2. 예제 2

    입력
    5
    4 2 7 3 6
    
    예상 출력
    16