네모네모

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

요약
가로 M, 세로 1인 격자에 막힌 칸을 피해 순서대로 N개의 블록을 놓을 때, 모든 배치에서 항상 블록이 놓이는 칸의 수를 구한다.
난이도

보통10점 중 7점

유형
그리디, 투 포인터, 누적 합, 구현
정답자
아직 제출이 없습니다

문제

네모네모, 네모네모 sign 삐뚤빼뚤해 like

재우는 네모 네모 게임이라는 게임을 즐겨 한다.

네모 네모 게임은 가로 MM칸, 세로 11칸의 격자판 위에 NN개의 블록을 놓는 게임이다.

격자의 각 칸은 비어 있거나 X 표시가 되어 있다. X 표시가 되어 있는 칸 위에는 블록을 놓을 수 없다.

ii번째 블록은 격자 위 가로로 A_iA\_i칸, 세로로 11칸의 공간을 차지한다.

또한, 블록은 순서대로 왼쪽부터 배치해야 한다. 즉, ii번째 블록은 i−1i-1번째 블록의 오른쪽에 놓여야 한다.

블록은 겹칠 수 없다. 즉, 한 칸의 격자 위에는 최대 한 개의 블록만이 놓일 수 있다.

이러한 조건을 만족하면서 NN개의 블록을 모두 격자판 위에 올릴 경우 게임에서 승리한다.

이 게임에서 승리하도록 블록을 배치하는 경우의 수는 매우 많다. 재우는 이 게임을 좀 더 고능하게 하기 위해서 항상 블록이 놓이는 칸들을 구하려고 한다.

재우를 대신하여 항상 블록이 놓이는 칸의 개수를 구해주자.

입력

첫 번째 줄에 블록 개수 NN, 격자판의 가로 길이 MM, X 표시된 칸의 수 KK가 공백으로 구분되어 주어진다.

두 번째 줄에 각 블록의 가로 길이를 나타내는 NN개의 정수 A_1,A_2,⋯ ,A_NA\_1, A\_2, \cdots , A\_N가 공백으로 구분되어 주어진다.

세 번째 줄에 X 표시된 칸들의 번호를 나타내는 KK개의 정수 X_1,X_2,⋯ ,X_KX\_1, X\_2, \cdots , X\_K (i<ji < j 이면 X_i<X_jX\_i < X\_j)가 공백으로 구분되어 주어진다.

항상 조건을 만족하도록 블록을 배치할 방법이 있는 입력만 주어진다.

출력

첫 번째 줄에 항상 블록이 놓이는 칸의 개수를 출력한다.

제한

  • 1≤N,K≤1061 \le N, K \le 10^6
  • 2≤M≤1092 \le M \le 10^9
  • 1≤A_i≤1091 \le A\_i \le 10^9
  • 1≤X_i≤M1 \le X\_i \le M
  • (∑_i=1NA_i)+K≤M(\sum\_{i=1}^N A\_i) + K \le M

힌트

예제3

  1. 예제 1

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

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

    입력
    5 11 3
    1 1 1 1 1
    4 5 11
    
    예상 출력
    0