В этот жаркий Санкт-Петербургский полдень стажёр Яндекса Аркадий сидел в офисе и вносил последние правки в свою дипломную работу. После нескольких часов тяжких трудов он решил развеяться и прогуляться до торгового автомата на первом этаже, чтобы купить бутылку своего любимого напитка Квас-Класс.
Стоит отметить, что в офисе установлен довольно необычный торговый автомат. Он принимает только монеты достоинством один рубль и купюры достоинством один миллион рублей, и при этом продаёт только бутылки напитка Квас-Класс ценой r рублей за штуку. Изначально у Аркадия есть b банкнот достоинством миллион рублей и c монет по одному рублю. В автомате изначально находятся d рублёвых монет, которыми он может давать сдачу. Процесс покупки одной бутылки напитка устроен следующим образом.
Хотя Аркадий пришёл купить только одну бутылку, он всё же программист, так что ему интересно, какое максимально количество бутылок он смог бы приобрести, если бы действовал оптимально? Можете считать, что в автомат загружено заведомо достаточное количество бутылок напитка Квас-Класс (что, к сожалению, далеко не всегда выполнено в реальной жизни).
В первой строке входных данных записаны два целых числа b и c (0 ≤ b, c ≤ 109) — количество банкнот достоинством в один миллион рублей и количество монет в один рубль в распоряжении Аркадия.
Во второй строке записаны два целых числа r и d (1 ≤ r ≤ 109, 0 ≤ d ≤ 109) — цена одной бутылки напитка Квас-Класс и количество монет в торговом автомате до покупок Аркадия. Обратите внимание, что количество купюр внутри автомата значения не имеет.
Выведите одно целое число равное максимальному количеству бутылок напитка Квас-Класс, которые Аркадий сможет купить если будет действовать оптимально.
21 1000000
1100000 0
20
10 700000
350000 200000
4
В первом примере Аркадий сможет потратить все свои деньги.
Во втором примере Аркадий может сначала купить две бутылки используя только имеющиеся у него монеты. Затем он купит бутылку с помощью банкноты (в автомате к этому моменту находятся 900 000 монет для выдачи сдачи). В конце он сможет купить ещё одну бутылку.
Наибольшей возрастающей подпоследовательностью (НВП) массива a1, ..., an называется последовательность индексов 1 ≤ i1 < ... < ik ≤ n, такая что ai1 < ... < aik и значение k максимально возможное. Наибольшая убывающая подпоследовательность (НУП) определяется аналогично.
В самой свежей задаче для собеседований в Яндекс вам даётся перестановка p = (p1, ..., pn) чисел 1, 2, ..., n, в которой требуется выбрать НВП и НУП не имеющие общих элементов, или определить, что это невозможно сделать. Формально, требуется выбрать две последовательности индексов i1 < ... < ik и j1 < ... < jl, такие что:
В первой строке записано целое число n (1 ≤ n ≤ 500 000) — размер перестановки p.
Во второй строке записаны n различных целых чисел p1, p2, ..., pn (1 ≤ pi ≤ n).
Если ответ существует, то выведите его в четырёх строках. В первой строке выведите целое число k — размер НВП в перестановке p. Во второй строке выведите k чисел i1, ..., ik удовлетворяющих условиям 1 ≤ i1 < ... < ik ≤ n и ai1 < ... < aik. В следующих двух строках выведите описание НУП j1, ..., jl в аналогичном формате. Все индексы i1, ..., ik, j1, ..., jl должны быть различны.
Если ответа не существует, то выведите «IMPOSSIBLE» (без кавычек) в единственной строке вывода.
4
2 4 1 3
2
1 4
2
2 3
4
3 4 1 2
IMPOSSIBLE
Во втором примере длины НВП и НУП равны 2. Приведём список всех возможных НВП: (1, 2), (3, 4) (указаны индексы элементов, а не их значения); также приведём список всех возможных НУП: (1, 3), (1, 4), (2, 3), (2, 4). Каждая НУП пересекается с каждой из НВП хотя бы по одному элементу, следовательно, ответа не существует.
Евгений занимается в Яндексе анализом больших данных. Недавно он решил немного отдохнуть, взял отпуск, и уехал в замечательный образовательный центр на берегу Чёрного моря преподавать школьникам машинное обучение и анализ данных.
По вечерам он идёт на набережную, где расположены n неплохих ресторанов, пронумерованных целыми числами 1, 2, ..., n, при этом ресторан с номером i находится на позиции i вдоль набережной. Евгений начинает в позиции 0 с запасом в e единиц энергии. Изначально желудок Евгения пуст и он тратит одну единицу энергии на перемещение в соседнюю позицию (например из позиции 0 в позицию 1, где расположен ресторан с номером 1). В течение вечера может происходить следующее.
Поскольку Евгений занимается машинным обучением и смежными областями, он попросил вас посчитать максимальное количество еды, которое он может съесть и затем вернуться в образовательный центр в точке 0 если будет действовать оптимально.
В первой строке входных данных записаны два целых числа n и e (1 ≤ n ≤ 200, 000, 1 ≤ e ≤ 107) — количество ресторанов на набережной и изначальный запас энергии Евгения.
Во второй строке записаны n целых чисел a1, a2, ..., an (0 ≤ ai ≤ 1 000 000), i-е из которых равняется точному количеству единиц еды, которое Евгений съест, если решит посетить ресторан i.
Выведите одно число — максимальное количество единиц еды, которое Евгений может употребить в течение вечера и вернуться затем в образовательный центр в точке 0.
5 100
1 1 1 1 1
5
4 25
3 30 1 3
6
В первом примере у Евгения очень большой запас энергии, поэтому он просто идёт от позиции 0 к позиции 5 и посещает все рестораны на своём пути, а затем возвращается в образовательный центр.
Во втором примере оптимальной стратегией для Евгения будет сначала пойти в ресторан номер 4, затем посетить ресторан 1 и после этого вернуться в позицию 0.
Вам скорее всего известно, что основным продуктом компании Яндекс является поисковик, о котором и пойдёт речь в данной задаче.
В рамках данной задачи будет считать, что поисковик работает с базой данных, которая может быть представлена как строка s длины n. Система разрешается пользователям делать произвольные текстовые запросы к базе данных, в качестве ответа на эти запросы будет выведен список всех вхождений запроса в базу. Вхождение в базу называется появление текста-запроса в качестве подстроки строки s.
Алисе скучно, поэтому она развлекает себя тем, что открывает поисковик и вводит туда различные запросы. Изначально перед Алисой пустое текстовое поле. Каждый раз она изменяет предыдущий запрос ровно на одну букву, дописывая её в начало или в конец запроса по своему усмотрению. Алиса проделывает такую операцию ровно n раз.
В этом процессе Алисе нравится смотреть как на экране появляются все вхождения и как сильно может изменить их количество после добавления одного символа. Алиса хочет протестировать как поведёт себя поисковик если ему потребуется выводить очень много данных, поэтому она хочет выбрать такую последовательность приписываний букв в начало или конец строки, что суммарное количество вхождений всех строк-запросов в строку базы данных s будет максимально. Какое максимальное значение может получить Алиса?
В первой строке входных данных записано одно целое число n (1 ≤ n ≤ 200 000) — длина строки s.
Во второй строке записана сама строка s, состоящая из строчных букв английского алфавита.
Выведите одно число — максимальное возможное суммарное количество вхождений всех строк-запросов.
5
aaaaa
15
6
abcabc
9
В первом примере последовательность "a" → "aa" → "aaa" → "aaaa" → "aaaaa" даёт результат в 15 = 5 + 4 + 3 + 2 + 1 вхождений.
Одной из оптимальных последовательностей во втором примере является "a" → "ab" → "abc" → "cabc" → "bcabc" → "abcabc", позволяя получить 9 = 2 + 2 + 2 + 1 + 1 + 1 вхождений в сумме.
Это интерактивная задача.
Алиса — голосовой помощник недавно представленный компанией Яндекс. Одним из направлений развития голосового помощника является добавление различных игр в которые Алиса сможет играть с пользователями, чтобы развлечь их. В этой задаче рассматривается игра со следующими правилами.
В игре есть возможность выбрать из нескольких уровней сложности. На последнем уровне игроку требуется угадать позицию числа n в изначальной перестановке за не более чем 50·n запросов. Вы ведёте разработку собственного голосового помощника Бориса и хотите научить его играть в эту игру, чтобы можно было поместить два телефона друг напротив друга и наблюдать битву искусственных интеллектов.
В начале Алиса сообщает игроку значение числа n (1 ≤ n ≤ 1000). Затем игрок может не более 50·n раз сделать запрос вида «0 x», где 0 означает, что игрок делает запрос, а x является позицией в массиве от 1 до n включительно, и означает, что Алиса должна увеличить значение px на один и сообщить количество различных элементов в массиве p после этого действия.
Как только вы уверены в своём ответе (или у вас кончились доступные запросы) вам необходимо вывести «1 x», где 1 означает вывод ответа, а x является собственно ответом, то есть догадкой, что в начале игры было выполнено px = n. Ваша программа должна завершиться как только выведет ответ, в противном случае вы можете получить непредсказуемый результат проверки.
5
1 5 2 4 3
2
В примере входных данных показан допустимый тест. Первое число соответствует размеру перестановки, а затем следуют непосредственные её элементы. Один из возможных сценариев взаимодействия выглядит следующим образом:
Строки, содержащие два числа, соответствуют возможному выводу вашей программы, а строки, содержащие одно число, соответствую выводу интерактора, то есть значениям, которые ваша программа должна считать.
5
0 1
4
0 1
4
0 3
3
0 4
2
1 2
Инженер Яндекса Иван — очень скрупулёзный человек, из тех кто никогда не создаст массив на большее количество элементов, чем ему действительно требуется.
Сегодня у Ивана есть массив из n различных целых положительных чисел a1, a2, ..., an, который он хочет положить в хеш-таблицу. Для этого он собирается выбрать некоторое значение m — количество корзин в хеш-таблице, а затем отправить число x в корзину
. Таким образом, число a1 попадёт в корзину h(a1), a2 попадёт в корзину h(a2) и так далее.
Настолько же сильно, насколько Иван любит порядок, он ненавидит коллизии. Поэтому он хочет выбрать значение m таким образом, чтобы все значения
были различными. От вас требуется найти подходящее m. Поскольку эффективность во всём является одной из целей инженера, работающего с большими данными, Иван просит вас выбрать среди всех подходящих m минимальное.
В первой строке входных данных записано число n (1 ≤ n ≤ 2 000 000) — количество чисел в массиве Ивана. В следующей строке записаны n целых чисел a1, a2, ..., an (1 ≤ ai ≤ 2 000 000). Гарантируется, что все элементы последовательности a различны.
Выведите одно целое число — минимальное значение m, такое что все числа
будут различными.
3
1 2 3
3
3
1 2 4
4
5
1 3 6 10 15
8