Дима и массив | 프로그래밍의 벗 PivotOJ
PivotOJ

Дима и массив

시간 제한: 6500ms메모리 제한: 1024MB출처: MOOI 2018-19 quallongBOJ 30718

문제

Диме не дарили массив aa, состоящий из nn целых чисел на день рождения, он не покупал его, не находил на улице, а он у него просто есть и всегда был, и Диме не очень-то и интересно откуда.

Дима не играет с массивом, не дарит его Пете, не режет на кусочки и не стремится его уничтожить. Дима просто выполняет операции двух видов со своим массивом:

  • ? l r --- узнать MEX мультимножества {al,al+1,,ar}\{a_l, a_{l+1}, \ldots, a_r\}
  • ! i x --- присвоить aia_i значение xx (0xn)(0 \leq x \leq n)

MEX мультимножества чисел {a1,a2,,ak}\{a_1, a_2, \ldots, a_k\} --- это минимальное целое t0t \ge 0 такое, что tait \ne a_i для всех 1ik1 \leq i \leq k.

На самом деле, Диме не очень нравится выполнять операции двух видов со своим массивом. Диму волнуют лишь результаты операций первого типа. Помогите Диме и напишите программу, которая выполнит операции за него.

입력

Первая строка содержит два целых числа nn и qq (1n500000,1q2500001 \leq n \leq 500\,000, 1 \leq q \leq 250\,000) --- размер массива, который есть у Димы и количество операций, соответственно.

Вторая строка содержит nn целых чисел aia_i (0ain0 \leq a_i \leq n) --- массив Димы до начала операций.

Каждая из следующих qq строк содержит описание одной операции в формате, описанном выше.

Гарантируется, что суммарно Дима сделал не более 5000050\,000 операций изменения массива.

Элементы массива пронумерованы, начиная с 11.

출력

Для каждой операцияя первого типа выведите одно целое число --- MEX соответствующего мультимножества. Ответы на запросы выводите в порядке, в котором они заданы во входных данных.

힌트

В примере запросы выглядят следующим образом:

  • Изначально массив равен [4,1,0,2,2,3][4, 1, 0, 2, 2, 3]
  • В первом запросе считается MEX от {4,1,0,2,2,3}\{4, 1, 0, 2, 2, 3\} и он равен 55.
  • Во втором запросе считается MEX от {2,2,3}\{2, 2, 3\} и он равен 00.
  • В третьем запросе считается MEX от {1,0,2,2}\{1, 0, 2, 2\} и он равен 33.
  • В четвёртом запросе считается MEX от {1,0,2,2,3}\{1, 0, 2, 2, 3\} и он равен 44.
  • Пятый запрос меняет массив. Теперь он равен [4,1,3,2,2,3][4, 1, 3, 2, 2, 3].
  • В шестом запросе считается MEX от всего массива и он равен 00.
  • Седьмой запрос меняет массив. Теперь он равен [4,1,3,0,2,3][4, 1, 3, 0, 2, 3].
  • В восьмом запросе снова считается MEX от всего массива и теперь он равен 55.

예제

예제 1

입력
6 8
4 1 0 2 2 3
? 1 6
? 4 6
? 2 5
? 2 6
! 3 3
? 1 6
! 4 0
? 1 6
출력
5
0
3
4
0
5
이 문제는 채점 준비 중입니다. 테스트 데이터가 확보되면 제출이 가능합니다.