독수리

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

요약
매일 한 칸을 골라 양 끝에서 날아가 지나온 칸의 양을 0으로 만들고 밤마다 각 칸의 양이 1씩 줄 때 먹을 수 있는 양의 최댓값을 구합니다.
난이도

보통10점 중 4점

유형
시뮬레이션, 그리디
정답자
아직 제출이 없습니다

문제

독수리는 양을 먹으며 산다. 양이 사는 곳은 크기가 1×N1 \times N인 직사각형이고, 1×11 \times 1 크기의 칸으로 나누어져 있다. 칸은 왼쪽에서부터 1,2,…,N1, 2, \dots, N번으로 번호가 매겨져 있다. ii번 칸에 사는 양의 수는 AiA_i마리이다.

독수리는 매일 아침 양을 먹으러 간다. 11번 칸의 왼쪽이나 NN번 칸의 오른쪽에서 날기 시작해 먹으려는 양이 있는 칸까지 날아간다. 독수리는 칸을 벗어나서 날 수 없다. 먹으려는 양이 있는 곳이 xx번이라면, xx번까지 날아간 다음 xx번 칸에 있는 양을 모두 먹는다. 독수리는 하루에 한 칸에 있는 양만 먹을 수 있다.

양은 독수리를 매우 무서워하기 때문에 독수리가 나는 모습을 보면 도망간다. 양은 자기 칸 위로 독수리가 나는 것을 확인하면 도망간다. 양이 도망가면 그 칸에 있는 양의 수는 0마리가 된다. 예를 들어 11번 칸의 왼쪽에서 날기 시작해 xx번 칸에 도착했다면 11번부터 x−1x-1번 칸까지에 있던 양이 모두 도망가 0마리가 된다. NN번 칸의 오른쪽에서 날기 시작했다면 x+1x+1번 칸부터 NN번 칸까지에 있던 양이 모두 도망간다.

또한 이곳은 위험한 곳이기 때문에 매일 밤에 모든 칸에 있던 양의 수가 1마리씩 줄어든다.

독수리가 매일 어떤 칸에 있는 양을 먹는지와 어느 쪽에서 날기 시작하는지에 따라 먹을 수 있는 양의 수가 달라진다.

양의 수가 주어졌을 때, 독수리가 먹을 수 있는 양의 수의 최댓값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 칸의 개수 NN이 주어진다. (1≤N≤1,0001 \le N \le 1{,}000)

둘째 줄에 각 칸에 있는 양의 수 A1,A2,…,ANA_1, A_2, \dots, A_N이 주어진다. (0≤Ai≤100,0000 \le A_i \le 100{,}000)

출력

첫째 줄에 독수리가 먹을 수 있는 양의 최대 수를 출력한다.

예제5

  1. 예제 1

    입력
    5
    1 10 4 10 1
    
    예상 출력
    21
    
  2. 예제 2

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

    입력
    6
    10 1 1 1 1 10
    
    예상 출력
    19
    
  4. 예제 4

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

    입력
    14
    10 1 10 2 10 3 10 4 10 3 10 2 10 1
    
    예상 출력
    49