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

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

카드 합성 이벤트

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

요약
인접한 카드를 하나가 남을 때까지 합치며, 합칠 때 두 카드 레벨의 합만큼 금화를 받고 왼쪽 카드의 레벨만 남을 때 얻을 수 있는 최대 금화를 구한다.
난이도

보통10점 중 6점

유형
구간, 동적 계획법
정답자
아직 제출이 없습니다

문제

영관이는 모바일 보드게임의 카드 합성 이벤트에 참여했다.

이벤트에는 순서가 정해진 카드 nn장이 한 줄로 놓여 있고, 카드마다 레벨이 하나씩 적혀 있다.

카드 A에 카드 B를 덧붙여 한 장으로 합칠 수 있다. 조건은 다음과 같다.

  1. 두 카드는 줄에서 서로 인접해야 한다.
  2. 합친 카드의 레벨은 A의 레벨과 같다. 덧붙인 B의 레벨은 사라진다.
  3. 합친 카드는 두 카드가 있던 자리에 그대로 남고, 다음 합성에서 한 장의 카드로 쓰인다.

합성을 한 번 할 때마다 합치기 직전 두 카드의 레벨을 더한 만큼 골드를 받는다.

카드가 한 장만 남을 때까지 합성을 n−1n-1번 한다. 영관이가 받을 수 있는 골드의 최댓값을 구해라.

레벨이 40, 30, 30인 카드 세 장 c1,c2,c3c_1, c_2, c_3으로 규칙을 확인해 보자. c3c_3에 c2c_2를 덧붙이면 레벨 30인 카드가 남고 골드 60을 받는다. 이어서 c1c_1에 그 카드를 덧붙이면 레벨 40인 카드가 남고 골드 70을 받아 합계는 130이다. 순서를 바꿔 c1c_1에 c2c_2를 덧붙이면 레벨 40인 카드가 남고 골드 70을 받는다. 그 카드에 c3c_3을 덧붙이면 골드 70을 다시 받아 합계는 140이다.

입력

첫째 줄에 카드의 개수 nn이 주어진다. (1≤n≤10001 \le n \le 1000)

둘째 줄에 카드 nn장의 레벨 L1,L2,…,LnL_1, L_2, \dots, L_n이 놓인 순서대로 주어진다. (0<Li≤1000000 < L_i \le 100000)

출력

받을 수 있는 골드의 최댓값을 한 줄에 출력한다. n=1n = 1이면 합성을 하지 않으므로 0을 출력한다.

예제4

  1. 예제 1

    입력
    3
    40 30 30
    
    예상 출력
    140
    
  2. 예제 2

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

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

    입력
    4
    7 7 7 7
    
    예상 출력
    42