CF1793B Fedya and Array

题目描述

最近,Fedya 在生日时收到了一个由 $n$ 个整数构成的数组 $a$,这些整数以环状排列。对于每一对相邻的数($a_1$ 和 $a_2$,$a_2$ 和 $a_3$,$\ldots$,$a_{n-1}$ 和 $a_n$,$a_n$ 和 $a_1$),它们的绝对差值等于 $1$。 我们称一个元素为“局部极大值”,当且仅当它大于它的两个相邻元素。同理,称一个元素为“局部极小值”,当且仅当它小于它的两个相邻元素。注意,$a_1$ 和 $a_n$ 也是相邻元素。 不幸的是,Fedya 把这个数组弄丢了,但他还记得数组中所有局部极大值的和为 $x$,所有局部极小值的和为 $y$。 给定 $x$ 和 $y$,请你帮助 Fedya 构造一个满足条件的、最短长度的数组。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 $t$($1 \le t \le 1000$),表示测试用例的数量。 接下来每组测试用例一行,包含两个整数 $x$ 和 $y$($-10^{9} \le y < x \le 10^{9}$),分别表示局部极大值的和和局部极小值的和。

输出格式

对于每组测试用例,第一行输出一个整数 $n$,表示满足条件的数组的最小长度。 第二行输出 $n$ 个整数 $a_1, a_2, \ldots, a_n$($-10^{9} \leqslant a_i \leqslant 10^{9}$),表示数组元素,要求每对相邻元素的绝对差值等于 $1$。 如果有多组解,输出任意一组均可。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

说明/提示

在第一个测试用例中,局部极大值出现在第 $3, 7, 10$ 个位置,局部极小值出现在第 $1, 6, 8$ 个位置。$x = a_3 + a_7 + a_{10} = 2 + 0 + 1 = 3$,$y = a_1 + a_6 + a_8 = 0 + (-1) + (-1) = -2$。 在第二个测试用例中,局部极大值出现在第 $2, 10$ 个位置,局部极小值出现在第 $1, 3$ 个位置。$x = a_2 + a_{10} = -1 + 5 = 4$,$y = a_1 + a_3 = -2 + (-2) = -4$。 在第三个测试用例中,局部极大值出现在第 $1, 5$ 个位置,局部极小值出现在第 $3, 6$ 个位置。 由 ChatGPT 4.1 翻译