Codeforces Round 586 (Div. 1 + Div. 2) |
---|
Закончено |
Мальчик Дима подарил Ульяне на день рождения множество $$$B$$$, состоящее из положительных целых чисел. Однако он не учел, что Ульяна терпеть не может множества, а больше всего на свете любит двудольные графы!
Ульяна уже была готова расстроиться, но её друг Леша сказал, что может построить неориентированный граф с помощью этого множества следующим образом: рассмотрим все целые числа как вершины графа и соединим ребрами все $$$i$$$ и $$$j$$$ такие, что $$$|i - j|$$$ принадлежит $$$B$$$.
К сожалению, граф, построенный по множеству $$$B$$$ не очень нравится Ульяне. Леша решил исправить ситуацию и хочет незаметно выкинуть из $$$B$$$ несколько чисел так, чтобы граф, построенный на новом множестве был двудольным. Сложность этой задачи заключается в том, что граф, с которым придется работать Леше, содержит бесконечное число вершин и ребер! Одному с такой задачей не справиться, поэтому Леша просит Вас о помощи. Напишите программу, которая удаляет из $$$B$$$ минимальное по размеру подмножество чисел так, чтобы граф, построенный на оставшемся множестве стал двудольным.
Напомним, что граф называется двудольным, если вершины можно разбить на 2 множества так, что не существует ребер между вершинами из одного множествами.
Первая строка содержит целое число $$$n ~ (1 \leqslant n \leqslant 200\,000)$$$ — размер множества $$$B$$$.
Вторая строка содержит $$$n$$$ целых чисел $$$b_1, b_2, \ldots, b_n ~ (1 \leqslant b_i \leqslant 10^{18})$$$ — элементы множества $$$B$$$, все $$$b_i$$$ уникальны (не повторяются)
В первой строке выведите целое число $$$k$$$ — количество удаляемых элементов множества, а во второй строке выведите $$$k$$$ чисел через пробел — значения удаляемых элементов в любом порядке.
Если возможных ответов несколько, выведите любой
3 1 2 3
1 2
2 2 6
0
Название |
---|