아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Apteka

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

요약
뒤에서 앞으로 이동하면서 거리와 요금의 곱을 지불하고 총 비용을 최소로 합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 그리디, 스택
정답자
아직 제출이 없습니다

문제

Jaś는 약국 앞에 늘어선 줄의 맨 뒤에 서 있습니다. 몹시 급한 Jaś는 돈을 조금 내더라도 앞사람들과 자리를 바꿔서 앞으로 가려고 합니다.

모든 사람은 자리를 바꿔 줄 의향이 있지만, ii번째 사람은 줄에서 한 칸 뒤로 물러날 때마다 cic_i를 받아야 합니다. 정확히 말하면, Jaś가 어떤 사람보다 계산대에서 kk칸(k>0k > 0) 더 멀리 떨어져 있고 그 사람과 자리를 바꾸고 싶다면, 그 사람에게 k⋅cik \cdot c_i를 지불해야 합니다.

Jaś는 줄의 맨 앞에 서고 싶습니다. 지출을 최소로 하려면 어떻게 자리를 바꿔야 하는지 구하세요.

입력

첫째 줄에 정수 nn (1≤n≤1061 \le n \le 10^6)이 주어집니다. 이는 약국 줄에서 Jaś 앞에 서 있는 사람의 수입니다.

둘째 줄에 nn개의 정수 c1,c2,…,cnc_1, c_2, \dots, c_n (1≤ci≤1091 \le c_i \le 10^9)이 주어집니다. cic_i는 Jaś가 ii번째 사람을 한 칸 뒤로 보내기 위해 지불해야 하는 금액입니다. 사람의 번호는 Jaś가 바로 뒤에 서 있는 사람부터, 즉 줄의 맨 뒤에서 맨 앞 방향으로 매깁니다.

출력

Jaś가 줄의 맨 앞에 서기 위해 지불해야 하는 최소 금액을 정수 하나로 출력합니다.

힌트

예시에서 Jaś는 먼저 앞에서 세 번째 사람과 2⋅22 \cdot 2의 비용으로 자리를 바꾸고, 그다음 맨 앞 사람과 3⋅23 \cdot 2의 비용으로 자리를 바꿉니다. 따라서 총 비용은 1010입니다.

예제3

  1. 예제 1

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

    입력
    1
    7
    
    예상 출력
    7
    
  3. 예제 3

    입력
    5
    1 2 3 4 5
    
    예상 출력
    15