AT_abc424_e [ABC424E] Cut in Half

题目描述

有一个袋子里装有 $N$ 根木棒,每根木棒的长度分别为 $A_1, A_2, \ldots, A_N$。 你需要重复进行 $K$ 次如下操作: - 从袋子中取出任意一根最长的木棒,将其等分成两根相等长度的木棒,并将这两根新木棒放回袋中。 经过 $K$ 次操作后,袋子中共有 $N + K$ 根木棒。请你找出其中第 $X$ 长的木棒的长度。 共有 $T$ 组测试数据,请分别回答每组测试数据。

输入格式

输入从标准输入读入,格式如下: > $T$ > $\mathrm{testcase}_1$ > $\mathrm{testcase}_2$ > $\vdots$ > $\mathrm{testcase}_T$ 第 $i$ 组测试数据 $\mathrm{testcase}_i$ 的格式如下: > $N\ K\ X$ > $A_1\ \ldots\ A_N$

输出格式

输出共 $T$ 行。第 $i$ 行 $(1 \leq i \leq T)$ 输出第 $i$ 组测试数据的答案。 当且仅当你的输出的绝对误差或相对误差不超过 $10^{-9}$ 时,答案才会被认为是正确的。

说明/提示

### 样例解释 1 在第 $1$ 组测试数据中,初始袋子中有 $3$ 根木棒,长度分别为 $20, 30, 40$。操作过程如下: - 从袋子中取出长度为 $40$ 的木棒,将其分成两根长度为 $20$ 的木棒,并放回袋子中。此时袋子中的木棒长度为 $20, 20, 20, 30$。 - 从袋子中取出长度为 $30$ 的木棒,将其分成两根长度为 $15$ 的木棒,并放回袋子中。此时袋子中的木棒长度为 $15, 15, 20, 20, 20$。 - 从袋子中取出长度为 $20$ 的木棒,将其分成两根长度为 $10$ 的木棒,并放回袋子中。此时袋子中的木棒长度为 $10, 10, 15, 15, 20, 20$。 - 从袋子中取出长度为 $20$ 的木棒,将其分成两根长度为 $10$ 的木棒,并放回袋子中。此时袋子中的木棒长度为 $10, 10, 10, 10, 15, 15, 20$。 经过操作后,第 $5$ 长的木棒长度为 $10$。 ### 数据范围 - $1 \leq T \leq 10^5$ - 对于每组测试数据: - $1 \leq N \leq 10^5$ - $1 \leq A_i \leq 10^9$ - $1 \leq K \leq 10^9$ - $1 \leq X \leq N + K$ - 所有测试数据中 $N$ 的总和不超过 $10^5$。 - 所有输入均为整数。 由 ChatGPT 5 翻译