Олимпиадный тренинг

Задача . Election Queries


Задача

Темы:

** Замечание: Время на тест для этой задачи 3 сек, в 1.5 раза больше чем по умолчанию.**

У Фермера Джона есть \(N\) (\(2 \leq N \leq 2 \cdot 10^5\)) коров, пронумерованных от \(1\) до \(N\). На ферме должны состоятся выборы двух главных коров. Изначально известно, что корова \(i\) проголосует за корову \(a_i\) (\(1 \leq a_i \leq N\)).

Определите двух главных коров, если ФД так организует процесс выборов:

  • Выбирает произвольное подмножество \(S\) коров, которое содержит как минимум одну корову, но не всех коров. ФД выбирает первой главной коровой корову \(x\), за которую проголосует большинство коров из \(S\).
  • ФД выбирает второй главной корову \(y\), за которую проголосует большинство из коров, не вошедших в \(S\).
  • Для фиксированного множества \(S\) ФД называет различием между главными коровами \(|x - y|\). Поскольку ФД не хочет иметь главными коровами коров с близкими номерами, он хочет выбрать \(S\) таким образом, чтобы максимизировать различие . Если ФД не может выбрать две различных коровы главными, различие равно \(0\).

Однако, некоторые коровы изменяют своё мнение и ФД может проводить выборы несколько раз. Поэтому он просит Вас ответить на \(Q\) (\(1 \leq Q \leq 10^5\)) вопросов. В каждом запросе, одна корова меняет свой голос. Для каждого запроса нужно вновь получить ответ.

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка содержит \(N\) и \(Q\).

Следующая строка содержит \(a_1, a_2, \ldots, a_N\).

Последующие \(Q\) строк содержат два целых числа \(i\) и \(x\), представляющих обновление \(a_i = x\) (\(1 \leq i, x \leq N\)).

ФОРМАТ ВЫВОДА (на экран / stdout):

Выведите \(Q\) строк, \(i\)-ая из которых - максимальное различие после первых \(i\) запросов.


Примеры
Входные данныеВыходные данные
1 5 3
1 2 3 4 5
3 4
1 2
5 2
4
3
2

time 500 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя