CF1045B Space Isaac

题目描述

似乎所有人都认为火星人是绿色的,但事实上他们是金属粉色且肥胖的。Ajs 有两个装有互不相同的非负整数的袋子。这两个袋子是不相交的,并且袋中数字的并集为 $ \{0,1,\ldots,M-1\} $,其中 $ M $ 是某个正整数。Ajs 从第一个袋子中取出一个数,从第二个袋子中取出另一个数,然后将它们的和对 $ M $ 取模。 请问有哪些模 $ M $ 的余数是 Ajs 无法通过这种方式得到的?

输入格式

第一行包含两个正整数 $ N $($ 1 \leq N \leq 200\,000 $)和 $ M $($ N+1 \leq M \leq 10^{9} $),分别表示第一个袋子中的元素个数和模数。 第二行包含 $ N $ 个非负整数 $ a_1,a_2,\ldots,a_N $($ 0 \leq a_1 < a_2 < \ldots < a_N < M $),表示第一个袋子的内容。

输出格式

第一行输出无法得到的模 $ M $ 余数集合的大小 $ K $。 第二行输出 $ K $ 个以空格分隔的非负整数(严格小于 $ M $),表示无法得到的余数。输出应按升序排列。如果 $ K = 0 $,则不要输出第二行。

说明/提示

在第一个样例中,第一个袋子和第二个袋子分别包含 $ \{3,4\} $ 和 $ \{0,1,2\} $。Ajs 可以得到除余数 $ 2 $ 外的所有模 $ 5 $ 余数:$ 4 + 1 \equiv 0 $,$ 4 + 2 \equiv 1 $,$ 3 + 0 \equiv 3 $,$ 3 + 1 \equiv 4 $(模 $ 5 $)。可以验证不存在从两个袋子中选数使得和为 $ 2 $ 模 $ 5 $ 的情况。 在第二个样例中,第一个袋子包含 $ \{5,25,125,625\} $,而第二个袋子包含所有其他不超过 $ 9 $ 位十进制数的非负整数。每个模 $ 1\,000\,000\,000 $ 的余数都可以通过从两个袋子中各选一个数相加得到。 翻译由 DeepSeek R1 完成