CF1220D Alex and Julian
题目描述
男孩 Dima 送给 Julian 一份生日礼物——一个由正整数组成的集合 $B$。然而,他并不知道 Julian 讨厌集合,但却非常喜欢二分图!
Julian 差点因此感到不快,但她的朋友 Alex 说,他可以用这个集合构建一个无向图:令所有整数为顶点,如果 $|i-j|$ 属于 $B$,则连接任意两个 $i$ 和 $j$。
不幸的是,Julian 并不喜欢用 $B$ 构建出来的图。Alex 决定补救,所以他想从 $B$ 中删除一些数,使得用新集合构建的图是二分图。难点在于,这个图有无限多个顶点和边!Alex 无法独自完成这个任务,于是请求你的帮助。请编写程序,从 $B$ 中删除最少数量的元素,使得用新集合构建的图是二分图。
回忆一下,若一个图的所有顶点可以分为两个不相交的集合,使得每条边都连接这两个集合中的顶点,则该图为二分图。
输入格式
第一行包含一个整数 $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$ 个整数,表示被删除的元素的值。
如果有多组答案,输出任意一组均可。
说明/提示
由 ChatGPT 4.1 翻译