Это сложная версия задачи. Отличие между версиями заключается в том, что в этой версии ограничения по времени и ограничения на $$$n$$$ и $$$q$$$ выше. Вы можете делать взломы только в том случае, если решили все версии этой задачи.
Гелифиш имеет массив, состоящий из $$$n$$$ множеств. Изначально все множества пусты.
Теперь Гелифиш выполнит $$$q$$$ операций. Каждая операция содержит одну операцию модификации и одну операцию запроса, для $$$i$$$-й ($$$1 \leq i \leq q$$$) операции:
Сначала идёт операция модификации, которая является одной из следующих:
Затем следует операция запроса:
Теперь Флауэр должна ответить на все запросы. Пожалуйста, помогите ей!
Дополнительное ограничение: Гелифиш будет давать следующую операцию только после того, как Флауэр ответит на предыдущую операцию запроса. Другими словами, вам нужно решить эту задачу онлайн. Пожалуйста, обратитесь к формату ввода для получения дополнительных деталей.
Первая строка содержит два целых числа $$$n$$$ и $$$q$$$ ($$$1 \leq n, q \leq 3 \cdot 10^5$$$) — количество множеств и количество операций.
Поскольку вам нужно отвечать на операции онлайн, операции будут закодированы.
$$$i$$$-я строка из следующих $$$q$$$ строк содержит три целых числа $$$a$$$, $$$b$$$ и $$$c$$$ ($$$1 \leq a \leq 3$$$, $$$1 \leq c \leq n$$$) — $$$i$$$-я операция в закодированной форме.
Здесь $$$a$$$ представляет тип операции модификации. Из них $$$a=1$$$ представляет Операцию вставки, $$$a=2$$$ представляет Операцию разворота, $$$a=3$$$ представляет Операцию удаления.
Для операции запроса $$$p$$$ будет вычисляться как $$$p = (c+\text{ans}_{i-1}-1) \bmod n + 1$$$.
Здесь $$$ \text{ans}_{i} (1 \leq i \leq q)$$$ представляет ответ на операцию запроса в $$$i$$$-й операции. Кроме того, мы определяем $$$ \text{ans}_{0} = 0$$$.
Для каждой операции запроса выведите ответ на запрос.
5 101 2 22 3 11 5 32 2 51 5 22 4 43 2 23 1 23 10 53 2 4
1 0 1 1 3 1 0 5 0 0
Все множества изначально пусты, поэтому массив равен $$$[\{\}, \{\}, \{\}, \{\}, \{\}]$$$.
С помощью метода декодирования, приведенного ранее, мы можем увидеть, что происходит в каждой операции:
Обратите внимание, что хотя мы не вставляли элемент $$$2$$$ в множества, мы все равно удаляем элемент $$$2$$$ из всех множеств в десятой операции. Это означает, что операция Удаления не обязательно требует существования множества, содержащего удаляемый элемент. Это также показывает, что возможно иметь две операции Удаления, которые удаляют один и тот же элемент.