AT_stpc2025_2_n Fair Flags
题目描述
有 $N$ 个人站在数轴上,第 $i$ 个人在坐标 $A_i$ 处。同时给定正整数 $L, R \ (L \le R)$。
现在考虑在数轴上插 $1$ 根或多根旗子。假设插了 $k$ 根旗子,旗子的位置为 $x_1, x_2, \dots, x_k$。当且仅当以下两个条件同时满足时,这种插旗方式称为**良好插旗方式**:
- 所有旗子都插在整数坐标上。即对于所有 $j = 1, 2, \dots, k$,有 $x_j$ 为整数。
- 对于每一个人来说,他距离最近的旗子的距离在 $L$ 到 $R$ 之间。也就是说,对于所有 $i = 1, 2, \dots, N$,都有 $L \le \bigl( \min_{1\le j\le k} |A_i - x_j| \bigr) \le R$。
如果存在良好的插旗方式,**请最小化旗子的数量**并给出构造方法;如果不存在,请报告无法构造。已知若存在良好插旗方式,所需旗子的最小数量 $k$ 满足 $k \le 8N$。
请对 $T$ 组测试用例分别给出答案。
输入格式
输入按以下格式给出。
> $T$ $ \mathrm{case}_1 $ $ \mathrm{case}_2 $ $ \vdots $ $ \mathrm{case}_T $
其中,$\mathrm{case}_i$ 表示第 $i$ 个测试用例,其格式如下:
> $N$ $L$ $R$ $A_1$ $A_2$ $\cdots$ $A_N$
输出格式
对于每组测试用例,如果存在良好的插旗方式,输出旗子的数目 $k \ (1 \le k \le 8N)$ 以及旗子的坐标 $x_1, x_2, \dots, x_k\ (-10^9 \le x_i \le 10^9)$,格式如下:
> $k$ $x_1$ $x_2$ $\cdots$ $x_k$
如果不存在良好的插旗方式,输出 `-1`。
说明/提示
## 部分分
若满足以下所有条件,可获得部分分 $25$ 分:
- 对于不存在良好插旗方式的测试用例,正确报告无法构造。
- 对于存在良好插旗方式的测试用例,给出的插旗方案为良好插旗方式,且旗子数量不超过 $8N$。
- 存在某个测试用例有良好插旗方式,但旗子的数量未最小化。
## 样例解释 1
第 $1$ 个测试用例中,人站在坐标 $0$,其到最近旗子的距离需在 $3$ 到 $6$ 之间。
输出样例中,把 $1$ 根旗子插在坐标 $6$,此时距离为 $6$,符合条件,实现了旗子数量最小化。同时,
```
1
-2
```
若输出为这样,则距离 $0$ 最近的旗子为 $-2$,距离为 $2$,不满足距离要求,不是良好插旗方式。
# 数据范围
- 输入均为整数
- $1 \le T \le 2 \times 10^4$
- $1 \le N \le 2\times 10^5$
- $1 \le L \le R \le 5 \times 10^8$
- $-5\times 10^8 \le A_1 < A_2 < \dots < A_N \le 5\times 10^8$
- 所有测试用例中 $N$ 的总和不超过 $4 \times 10^5$。
由 ChatGPT 5 翻译