만드는 중입니다

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

기숙사 소등

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

요약
방 N개의 초기 전등 상태가 주어졌을 때, 앞선 방 중 꺼진 방의 개수가 집합 A에 포함될 때만 방을 끌 수 있습니다. 끌 수 없는 방의 최소 개수를 구합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 비트 연산
정답자
아직 제출이 없습니다

문제

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

ii번 방을 소등하려면(1≤i≤N1 \le i \le N), 1번 방부터 i−1i-1번 방 중 이미 소등된 방의 수가 집합 AA에 속해야 한다. 예컨대 A={1,3,9}A = \{1,3,9\}이고, 1번부터 4번 방 중 2번과 4번 방만 소등되었다면 소등된 방의 수는 2이다. 2는 AA의 원소가 아니므로 5번 방은 소등할 수 없다.

벌점을 최소화하기 위해 가능한 한 많은 방을 소등하려고 한다. 두 방을 동시에 소등할 수 없고, 이미 소등한 방을 다시 켤 수도 없다.

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

입력

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

두 번째 줄에 집합 AA의 KK개의 원소 AiA_i가 공백으로 구분되어 주어진다. 모든 AiA_i는 서로 다르다고 보장된다.

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

출력

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

제한

  • 1≤K≤N≤3×1051 \le K \le N \le 3 \times 10^5
  • 0≤Ai≤N−10 \le A_i \le N-1 (1≤i≤K1 \le i \le K)
  • Ai≠AjA_i \ne A_j (1≤i<j≤K1 \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