만드는 중입니다

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

부분 수열의 점수

면접 대비

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

요약
각 원부분 배열에서 시작점으로부터 k번째 원소에 k를 곱해 더한 값의 최댓값을 구한다.
난이도

보통10점 중 5점

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

문제

수열 s=s1,s2,…,sns = s_1, s_2, \dots, s_n의 점수는 ∑i=1ni×si\sum_{i=1}^{n} i \times s_i로 구할 수 있다.

연속한 부분 수열도 그 자체로 하나의 수열이므로, 점수를 계산할 때 가중치 1,2,3,…1, 2, 3, \dots은 부분 수열의 첫 항부터 다시 센다. 즉, 부분 수열 sl,sl+1,…,srs_l, s_{l+1}, \dots, s_r의 점수는 ∑i=lr(i−l+1)×si\sum_{i=l}^{r} (i - l + 1) \times s_i이다.

수열 ss의 연속한 부분 수열의 점수 중 최댓값을 구하는 프로그램을 작성하시오. 길이가 0인 부분 수열도 고를 수 있고, 그 점수는 0이다.

입력

첫째 줄에 nn (1≤n≤200 0001 \le n \le 200\,000)이 주어진다.

둘째 줄에 s1,s2,…,sns_1, s_2, \dots, s_n이 주어진다. (∣si∣≤107|s_i| \le 10^7)

출력

첫째 줄에 수열 ss의 연속한 부분 수열의 점수 중 최댓값을 출력한다.

예제3

  1. 예제 1

    입력
    6
    5 -1000 1 -3 7 -8
    
    예상 출력
    16
    
  2. 예제 2

    입력
    5
    1000 1000 1001 1000 1000
    
    예상 출력
    15003
    
  3. 예제 3

    입력
    3
    -60 -70 -80
    
    예상 출력
    0