만드는 중입니다

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

제외 최소값

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

요약
배열의 각 구간에 대해 중복된 값 하나를 앞뒤 값(±1)으로 옮겨 만들 수 있는 최대 mex를 구합니다.
난이도

어려움10점 중 9점

유형
배열, 그리디, 분할 정복
정답자
아직 제출이 없습니다

문제

Ferume이 이 문제를 O(nnlog⁡n)O(n \sqrt{n} \log n)보다 빠르게 풀 수 있냐고 물었다. 그리고 실제로 풀 수 있었다! 이 문제를 만들어 주고, 지루한 풀이로 남지 않게 해 준 그에게 감사한다.

SS를 음이 아닌 정수들의 다중집합이라고 하자. SS에 대해 다음 연산을 0번을 포함해 임의의 횟수만큼 할 수 있다. SS에 두 개 이상 들어 있는 xx를 하나 고르고, 그 중 한 개를 삭제한 뒤 대신 x−1x-1 또는 x+1x+1을 삽입한다. x−1x-1은 음이 아닐 때에만 삽입할 수 있다. F(S)F(S)를 이 연산들로 얻을 수 있는 최대 mex(S)mex(S)라고 하자. 여기서 mex(S)mex(S)는 SS에 없는 가장 작은 음이 아닌 정수이다.

길이가 nn인 배열 aa와 qq개의 질의 [l;r][l;r]이 주어진다. 각 질의에 대해 F({al,al+1,…,ar})F(\{ a_l, a_{l+1}, \ldots, a_r \})를 구하라.

입력

첫째 줄에 배열의 크기 nn과 질의의 개수 qq가 주어진다 (1≤n,q≤5⋅1051 \le n, q \le 5 \cdot 10^5). 둘째 줄에 배열 a1,a2,…,ana_1, a_2, \ldots, a_n이 주어진다 (0≤ai≤5⋅1050 \le a_i \le 5 \cdot 10^5). 다음 qq개의 줄에는 각각 질의 lil_i rir_i가 주어진다 (1≤li≤ri≤n1 \le l_i \le r_i \le n).

출력

각 질의의 답을 입력된 순서대로 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

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

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