아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

전등을 상자에 넣기

면접 대비

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

요약
각 전등의 초기 상태와 자동으로 상태가 바뀌는 일정이 주어질 때, 스위치를 적절히 사용해 모든 전등을 끌 수 있는 가장 이른 시각을 구한다.
난이도

보통10점 중 7점

유형
이분 탐색, 그리디, 누적 합, 구현
정답자
아직 제출이 없습니다

문제

Wesley는 명절 장식을 정리해야 한다. Wesley에게는 NN개의 전등이 일렬로 있고, 그중 일부는 켜져 있을 수 있다. Wesley는 전등의 플러그를 뽑기 전에 모든 전등을 꺼야 한다. 그렇지 않으면 감전되어 죽을 것이다.

각 전등에는 전등을 켜거나 끌 수 있는 스위치가 하나씩 있다. Wesley는 첫 번째 초부터 시작해서 매 초마다 이 스위치를 최대 하나 사용할 수 있다. 하지만 전등들은 변덕스러워서, 앞으로 MM초 동안 스스로 상태를 바꾼다. 구체적으로 ii번째 초가 끝날 때 bib_i번째 전등이 상태를 뒤집는다. 꺼져 있었다면 켜지고, 켜져 있었다면 꺼진다. Wesley는 전등을 최대한 빨리 정리하고 싶어 하므로, 스위치를 이상적으로 사용했을 때 모든 전등이 꺼지는 가장 이른 시각이 언제인지 알고 싶어 한다. 즉, 어떤 스위치 사용 순서로 ii번째 초가 끝날 때까지 모든 전등을 끌 수 있는 가장 작은 ii를 출력한다. 처음부터 모든 전등이 꺼져 있다면 그런 ii는 0이다.

입력

첫째 줄에 전등의 개수 NN과 전등이 저절로 상태를 바꾸는 횟수 MM이 주어진다. (1≤N,M≤2⋅1051 \le N, M \le 2 \cdot 10^5)

둘째 줄에 NN개의 정수 a1,a2,…,aNa_1, a_2, \ldots, a_N이 주어진다. (0≤ai≤10 \le a_i \le 1) ai=1a_i = 1이면 ii번째 전등이 처음에 켜져 있고, ai=0a_i = 0이면 꺼져 있다.

셋째 줄에 MM개의 정수 b1,b2,…,bMb_1, b_2, \ldots, b_M이 주어진다. bib_i번째 전등이 ii번째 초가 끝날 때 상태를 뒤집는다는 뜻이다. (1≤bi≤N1 \le b_i \le N)

출력

Wesley가 모든 전등을 끄는 데 걸리는 가장 이른 시각을 초 단위로 출력한다. MM초가 지나기 전에 모든 전등을 끌 수 있다면, Wesley는 이후의 상태 변화를 무시하고 곧바로 전등을 정리한다.

예제2

  1. 예제 1

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

    입력
    5 8
    0 1 0 1 1
    1 2 2 1 4 3 2 1
    
    예상 출력
    4