Codeforces Round 482 (Div. 2) |
---|
Закончено |
Куро играет в обучающую игру про числа. Основные математические операции в этой игре — наибольший общий делитель, побитовое исключающее ИЛИ и сумма двух чисел. Куро так любит эту игру, что проходит уровень за уровнем изо дня в день.
К сожалению, Куро уезжает в отпуск и будет неспособна продолжить череду решений. Поскольку Кэти — надёжный человек, Куро попросил её прийти к нему домой в этот день и поиграть за него.
Изначально дан пустой массив $$$a$$$. Игр состоит из $$$q$$$ запросов двух разных типов. Запросы первого типа просят Кэти добавить число $$$u_i$$$ в массив $$$a$$$. Запросы второго типа просят Кэти найти такое число $$$v$$$, принадлежащее массиву $$$a$$$, что $$$k_i \mid GCD(x_i, v)$$$, $$$x_i + v \leq s_i$$$, и $$$x_i \oplus v$$$ максимально, где $$$\oplus$$$ обозначает операцию побитового исключающего ИЛИ, $$$GCD(c, d)$$$ обозначает наибольший общий делитель целых чисел $$$c$$$ и $$$d$$$, а $$$y \mid x$$$ означает, что $$$x$$$ делится на $$$y$$$, или же вывести -1, если таких чисел в массиве нет.
Поскольку вы программист, Кэти просит вас написать программу, которая будет автоматически и точно выполнять внутриигровые запросы, чтобы выполнить поручения Куро. Давайте поможем ей!
В первой строке содержится одно целое число $$$q$$$ ($$$2 \leq q \leq 10^{5}$$$) — число внутриигровых запросов.
Далее следует $$$q$$$ строк, каждая из которых начинается с целого числа $$$t_i$$$ — типа запроса:
Гарантируется, что первый запрос имеет тип $$$1$$$ и что существует хотя бы один запрос типа $$$2$$$.
Для каждого запроса типа $$$2$$$ выведите запрашиваемое число $$$v$$$ или -1, если таких чисел не найдено, в отдельной строке.
5
1 1
1 2
2 1 1 3
2 1 1 2
2 1 1 1
2
1
-1
10
1 9
2 9 9 22
2 3 3 18
1 25
2 9 9 20
2 25 25 14
1 20
2 26 26 3
1 14
2 20 20 9
9
9
9
-1
-1
-1
В первом примере необходимо выполнить пять запросов:
Название |
---|