디마와 배열
시간 제한6.5초메모리 제한1024 MB
길이 n인 배열에서 구간 [l, r]의 MEX를 구하고, 한 원소의 값을 바꾸는 연산을 처리합니다.
문제
디마는 정수 개로 이루어진 배열 를 가지고 있다. 생일 선물로 받은 것도, 직접 산 것도, 길에서 주운 것도 아니다. 원래부터 있었고 항상 있었다. 디마는 이 배열이 어디서 왔는지 별로 궁금해하지 않는다.
디마는 배열을 가지고 놀지 않고, Petya에게 주지 않으며, 잘게 자르지도 않고, 없애려고 하지도 않는다. 디마는 배열에 두 종류의 연산만 수행한다.
? l r: 다중집합 의 MEX를 구한다.! i x: 의 값을 로 바꾼다 .
다중집합 의 MEX는 모든 에 대해 를 만족하는 가장 작은 정수 이다.
입력
첫 줄에는 두 정수 과 (, )가 주어진다. 각각 배열의 크기와 연산의 개수다.
둘째 줄에는 연산을 시작하기 전 배열의 원소 () 개가 주어진다.
다음 개 줄에는 위에서 설명한 형식의 연산이 한 줄에 하나씩 주어진다. 배열을 바꾸는 연산은 모두 합해 최대 개라고 보장된다.
원소의 번호는 1부터 시작한다.
출력
첫 번째 종류의 연산마다 해당 다중집합의 MEX를 한 줄에 하나씩 출력한다. 답은 입력에 주어진 질의 순서대로 출력한다.
힌트
샘플에서 질의는 다음과 같다.
- 처음 배열은 이다.
- 첫 번째 질의는 의 MEX를 구하며, 값은 이다.
- 두 번째 질의는 의 MEX를 구하며, 값은 이다.
- 세 번째 질의는 의 MEX를 구하며, 값은 이다.
- 네 번째 질의는 의 MEX를 구하며, 값은 이다.
- 다섯 번째 연산은 배열을 바꾼다. 이제 배열은 이다.
- 여섯 번째 질의는 전체 배열의 MEX를 구하며, 값은 이다.
- 일곱 번째 연산은 배열을 바꾼다. 이제 배열은 이다.
- 여덟 번째 질의는 다시 전체 배열의 MEX를 구하며, 값은 이다.