기숙사 소등

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

요약
N개 방의 초기 소등 상태와 집합 A가 주어질 때, i번 방을 소등하려면 i보다 앞선 소등된 방의 수가 A에 속해야 한다는 조건 아래 소등하지 못하는 방의 수를 최소화한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 그리디, 배열, 이분 탐색
정답자
아직 제출이 없습니다

문제

서울과학고의 기숙사는 NN개의 방으로 이루어져 있고, 이 NN개의 방에는 각각 11번부터 NN번까지 번호가 붙어 있다. 기숙사에 있는 학생들은 새벽 1시가 되면 소등을 해야 하고, 그렇지 않으면 벌점을 받게 된다. 그런데 기숙사에 알 수 없는 오류가 생겨 특정 조건을 만족해야만 소등을 할 수 있게 되었다.

ii (1≤i≤N1 \le i \le N)번 방이 소등을 하기 위해서는, 11번 방부터 i−1i-1번 방 중 이미 소등을 완료한 방의 수가 집합 AA에 속해야 한다. 예컨대, A=1,3,9A = \\{1,3,9\\}이고, 1,2,3,41,2,3,4번 방 중 2,42,4번 방만 소등하였다면, 11번 방부터 44번 방 중 소등한 방의 수가 22로 AA의 원소가 아니므로 55번 방은 소등할 수 없다.

전체 학생들이 받는 벌점의 수를 최소화하기 위해 가능한 한 많은 방을 소등하고자 한다. 임의의 두 방이 동시에 소등하거나 이미 소등한 방이 다시 전등을 켜는 것은 불가능하다.

처음 11번 방부터 NN번 방까지의 소등 여부가 주어질 때, 소등하지 못하는 방의 수의 최솟값을 구하여라.

입력

첫 번째 줄에 기숙사 방의 수 NN, 집합 AA의 원소 수 KK가 공백으로 구분되어 주어진다.

두 번째 줄에 집합 AA의 KK개의 원소 A_iA\_i가 공백으로 구분되어 주어진다. A_iA\_i들은 서로 다름이 보장된다.

세 번째 줄에는 11번 방부터 NN번 방까지 각 방의 최초 소등 여부가 공백으로 구분되어 주어진다. ii번째 방이 최초에 소등되었다면 00이 주어지고, 최초에 소등되지 않았다면 11이 주어진다.

출력

첫 번째 줄에 최종적으로 소등하지 못하는 방의 수의 최솟값을 출력한다.

제한

  • 1≤K≤N≤3×1051 \le K \le N \le 3 \times 10^5
  • 0≤A_i≤N−10 \le A\_i \le N - 1 (1≤i≤K)(1 \le i \le K)
  • A_i≠A_jA\_i \ne A\_j (1≤i<j≤K)(1 \le i < j \le K)

예제2

  1. 예제 1

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

    입력
    9 3
    2 0 5
    1 0 1 0 1 1 0 1 0
    
    예상 출력
    0