만드는 중입니다

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

대피 경로

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

요약
길이 W인 복도에서 각 칸이 출구, 입구, 또는 밀폐 시각이 있는 방화문일 때, 각 입구가 매 시각 한 명씩 내보내는 사람 중 출구에 도달할 수 있는 최대 인원을 구한다.
난이도

어려움10점 중 8점

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

문제

일본에서는 방재 연구가 활발히 이루어지고 있으며, 최근 그 중요성이 더욱 커지고 있다. 대피 경로의 평가도 중요한 연구 주제 중 하나이다. 이번에는 직선 형태의 통로에 대한 안전성을 평가한다.

통로는 WW개의 유닛으로 나뉘어 있고, 한쪽 끝 유닛부터 다른 쪽 끝 유닛까지 1,2,3,…,W1, 2, 3, \ldots, W의 번호가 붙어 있다. 통로 안의 각 유닛에는 입구 문, 출구 문, 방화문 중 하나가 있다. 입구 문, 출구 문, 방화문은 각각 통로 안에 여러 개 존재할 수 있다.

이 문제에서는 시각 t=0t=0에 화재가 발생했다고 가정한다. 이로 인해 통로 외부에서 대피하려는 사람들이 입구 문을 통해 통로로 들어오고, 더 안전한 곳으로 나가기 위해 출구 문으로 탈출하려 한다. 대피 중인 각 사람은 단위 시간마다 유닛 하나를 이동하거나 지금 있는 유닛에 머무를 수 있다. 즉, 시각 tt에 어떤 사람이 유닛 ii에 있다면, 그 사람은 시각 t+1t+1에 유닛 i−1,i,i+1i-1, i, i+1 세 수 중 11 이상 WW 이하인 것을 선택해 그 번호의 유닛으로 이동할 수 있다. 방화문이 있는 유닛은 일정 시각 이후가 되면 완전히 차단되어, 대피 중인 사람들이 그 유닛에 들어갈 수 없게 된다. 또한 그 유닛 안에 있던 사람들도 그곳에서 다른 유닛으로 이동할 수 없게 된다.

이 문제의 목적은 각 문의 정보가 주어질 때, 대피 중인 사람들이 최적으로 행동했을 때 최대 몇 명이 출구 문에 도달할 수 있는지 계산하는 것이다.

통로의 정보가 WW개의 정수 aia_i로 주어진다.

  • ai=0a_i = 0일 때, ii번째 유닛이 출구 문임을 나타낸다.
  • ai<0a_i < 0일 때, ii번째 유닛이 방화문에 의해 시각 ∣ai∣|a_i| 이후 출입할 수 없게 됨을 나타낸다.
  • ai>0a_i > 0일 때, ii번째 유닛이 입구 문임을 나타내며, 시각 t=0,1,2,…,ai−1t=0, 1, 2, \ldots, a_i-1 각각에서 정확히 한 사람이 ii번째 유닛에 나타난다. 시각 tt에 나타난 사람은 시각 t+1t+1부터 이동을 시작한다.

한 유닛에 여러 사람이 있어도 된다.

출구 문에 도달할 수 있는 최대 사람 수를 구하여라.

입력

입력은 다음 형식으로 주어진다.

WW

a1a_1 a2a_2 ...... aWa_W

출력

최대 사람 수를 한 줄에 출력하여라.

제한

  • 1≤W≤1051 ≤ W ≤ 10^5
  • ∣ai∣≤104|a_i| ≤ 10^4
  • 입력값은 모두 정수이다.

예제3

  1. 예제 1

    입력
    7
    2 0 -2 3 2 -2 0
    
    예상 출력
    4
    
  2. 예제 2

    입력
    4
    1 1 1 1
    
    예상 출력
    0
    
  3. 예제 3

    입력
    9
    10 -10 10 -10 10 -10 10 -10 0
    
    예상 출력
    24