EduBrick

G. Различные числа с изменениями

4000 мс · 256 МБ · всё или ничего

Дан массив. Запросы двух видов: узнать количество различных значений на отрезке и заменить один элемент массива.

Формат ввода

В первой строке nn и qq (1≤n,q≤5⋅1041 \le n, q \le 5 \cdot 10^4). Во второй строке nn чисел aia_i (1≤ai≤1061 \le a_i \le 10^6).

В следующих qq строках операции. Операция ? l r (1≤l≤r≤n1 \le l \le r \le n) — сколько различных значений на отрезке. Операция ! p x (1≤p≤n1 \le p \le n, 1≤x≤1061 \le x \le 10^6) — присвоить ap=xa_p = x.

Формат вывода

Для каждой операции первого вида выведите ответ в отдельной строке.

Примеры

ввод
5 5
1 2 1 3 2
? 1 5
? 2 4
! 3 7
? 1 3
? 1 5
вывод
3
3
3
4
ввод
1 3
1000000
? 1 1
! 1 5
? 1 1
вывод
1
1
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.