만드는 중입니다

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

열사병

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

요약
직선 위 병원의 수용량과 도로별 환자 발생 순서가 주어질 때, 양쪽 병원이 모두 찬 상태에서 헬기로 이송되는 환자 수의 최댓값을 구합니다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 동적 계획법, 분할 정복
정답자
아직 제출이 없습니다

문제

JOI 섬은 서쪽에서 동쪽으로 1번부터 LL번까지 번호가 매겨진 LL개의 구역으로 이루어져 있다. 섬에는 1번부터 L−1L-1번까지 번호가 매겨진 L−1L-1개의 도로가 있으며, 도로 ii (1≤i≤L−11 ≤ i ≤ L-1)는 구역 ii와 i+1i+1을 양방향으로 잇는다.

JOI 섬에서 국제정보올림피아드(IOI 20XX)가 열릴 예정이다. 이 섬은 極심한 더위로 유명하다. 더위에 익숙하지 않은 외국 참가자는 열사병에 걸릴 위험이 크다. 그래서 주최 측은 다음 조치를 마련했다.

  • 먼저 각 ii (1≤i≤L1 ≤ i ≤ L)에 대해 구역 ii에 수용 인원이 CiC_i명인 병원을 하나씩 준비한다. Ci=0C_i = 0인 병원도 있다.
  • 대회 중 도로 xx (1≤x≤L−11 ≤ x ≤ L-1)에서 열사병 환자가 발생하면 다음 절차로 병원에 보낸다.
    • 구역 xx 또는 구역 x+1x+1의 병원 중 자리가 남아 있는 곳으로 보낸다. 두 병원에 모두 자리가 있으면 어느 쪽을 선택해도 된다. 두 병원이 모두 가득 찼다면 섬 밖의 일반 병원으로 헬리콥터를 이용해 보낸다.

헬리콥터 이용에는 비용이 많이 들기 때문에, 주최 측은 헬리콥터로 보내야 하는 환자 수의 최댓값을 알고 싶어 한다. 시나리오는 다음과 같다.

  • 대회 전에는 어느 병원에도 환자가 없다.
  • 대회 중 NN명이 열사병에 걸린다. jj번째 (1≤j≤N1 ≤ j ≤ N) 환자는 도로 XjX_j에서 발생한다.
  • 각 jj (1≤j≤N−11 ≤ j ≤ N-1)에 대해, j+1j+1번째 환자가 발생할 때 1번째부터 jj번째까지의 환자는 이미 병원에 보내져 있다. 증상이 심하므로 대회 중에 병원을 떠나는 환자는 없다.

구역 수, 병원 정보, 환자 정보가 주어질 때, 위 시나리오에서 헬리콥터로 보내는 환자 수의 최댓값을 계산하는 프로그램을 작성하라.

입력

표준 입력에서 다음 데이터를 읽는다.

L
C_1 C_2 ... C_L
N
X_1 X_2 ... X_N

출력

표준 출력에 헬리콥터로 보내는 환자 수의 최댓값을 한 줄로 출력한다.

제한

  • 2≤L≤80002 ≤ L ≤ 8000.
  • 0≤Ci≤80000 ≤ C_i ≤ 8000 (1≤i≤L1 ≤ i ≤ L).
  • 1≤N≤80001 ≤ N ≤ 8000.
  • 1≤Xj≤L−11 ≤ X_j ≤ L-1 (1≤j≤N1 ≤ j ≤ N).
  • 주어지는 값은 모두 정수이다.

예제5

  1. 예제 1

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

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

    입력
    6
    4000 1 1 0 4000 1
    5
    1 1 2 3 5
    
    예상 출력
    1
    
  4. 예제 4

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

    입력
    10
    2 2 2 2 2 2 2 2 2 2
    18
    1 3 5 7 9 2 4 6 8 1 3 5 7 9 2 4 6 8
    
    예상 출력
    3