CF1847E Triangle Platinum?

题目描述

这是一个交互题。 Made in Heaven 是一个非常奇特的替身。当然,它(可以说)是已知最强的替身,但它也是一个狂热的谜题爱好者。例如,它最近给 Qtaro 出了如下问题: Made in Heaven 拥有 $n$ 个隐藏的整数 $a_1, a_2, \dots, a_n$($3 \le n \le 5000$,$1 \le a_i \le 4$)。Qtaro 需要通过向 Made in Heaven 提出如下形式的询问,确定所有 $a_i$ 的值: - 每次询问,Qtaro 可以给 Made in Heaven 三个不同的下标 $i$、$j$ 和 $k$($1 \leq i, j, k \leq n$)。 - 如果 $a_i, a_j, a_k$ 能构成一个非退化三角形 $^\dagger$,Made in Heaven 会回复这个三角形的面积。 - 否则,Made in Heaven 会回复 $0$。 Qtaro 最多可以提出 $5500$ 次这样的询问,之后必须要么给出所有 $a_i$ 的值,要么报告无法唯一确定。 由于宇宙重启,Qtaro 没有 Jotaro 那么聪明。请你帮助 Qtaro 解决 Made in Heaven 的问题。 —————————————————————— $^\dagger$ 三个正整数 $a, b, c$ 能构成非退化三角形,当且仅当满足以下三个不等式: - $a + b > c$, - $b + c > a$, - $c + a > b$。

输入格式

交互开始时,首先读入一个整数 $n$($3 \le n \le 5000$),表示隐藏整数的个数。 每次询问 $(i, j, k)$($1 \leq i < j < k \leq n$),输出一行 "? $i$ $j$ $k$"(不含引号)。随后,你应读入一个整数 $s$。 - 如果 $s = 0$,则 $a_i, a_j, a_k$ 不能构成非退化三角形。 - 否则,$s = 16\Delta^2$,其中 $\Delta$ 是三角形的面积。面积以此格式给出,便于你只需处理整数输入。 如果无法唯一确定所有 $a_i$,输出 "! $-1$"(不含引号)。如果你已经确定了所有 $a_i$ 的值,输出 "! $a_1$ $a_2$ $\dots$ $a_n$"(一行)。 交互器是非自适应的。隐藏数组 $a_1, a_2, \dots, a_n$ 在交互过程中是固定的,不会改变。 每次输出询问后不要忘记换行并刷新输出缓冲区,否则会因“Idleness limit exceeded”而被判为超时。具体刷新方法如下: - C++:fflush(stdout) 或 cout.flush() - Java:System.out.flush() - Pascal:flush(output) - Python:stdout.flush() - 其它语言请查阅相关文档。 Hack 你可以用以下输入格式对解法进行 Hack。 第一行一个整数 $n$($3 \le n \le 5000$),表示隐藏整数的个数。 第二行 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 4$),表示隐藏数组。

输出格式

见输入格式说明。

说明/提示

在第一个样例中,交互过程如下: | Stdin | Stdout| 解释说明 | | --- | --- | --- | | 3 | | 读取 $n = 3$。存在 $3$ 个隐藏的整数。 | | | ? 1 2 3 | 询问由 $a_1$,$a_2$ 和 $a_3$ 组成的三角形面积。 | | 63 | | 收到 $16\Delta^2 = 63$。因此面积 $\Delta = \sqrt{\frac{63}{16}} \approx 1.984313$。 | | | ! -1 | 回答不存在**唯一**满足询问的数组。 | 根据接收到的面积,我们可以推断出组成三角形的数字(按某种顺序)要么是 ($4$, $4$, $1$),要么是 ($3$, $2$, $2$)。由于存在多个满足询问的数字数组,因此无法找到唯一答案。 在第二个样例中,交互过程如下: | 步骤 | Stdin | Stdout | 解释说明 | | --- | --- | --- | --- | | 1 | 6 | | 读取 $n = 6$。存在 $6$ 个隐藏的整数。 | | 2 | | ? 1 2 3 | 询问由 $a_1$,$a_2$ 和 $a_3$ 组成的三角形面积。 | | 3 | 0 | | 无法组成非退化三角形(即面积为 0)。 | | 4 | | ? 2 3 4 | 询问由 $a_2$,$a_3$ 和 $a_4$ 组成的三角形面积。 | | 5 | 0 | | 无法组成非退化三角形。 | | 6 | | ? 4 5 6 | 询问由 $a_4$,$a_5$ 和 $a_6$ 组成的三角形面积。 | | 7 | 0 | | 无法组成非退化三角形。 | | 8 | | ? 1 5 6 | 询问由 $a_1$,$a_5$ 和 $a_6$ 组成的三角形面积。 | | 9 | 63 | | 收到 $16\Delta^2 = 63$。因此面积 $\Delta = \sqrt{\frac{63}{16}} \approx 1.984313$。 | | 10 | | ? 3 5 6 | 询问由 $a_3$,$a_5$ 和 $a_6$ 组成的三角形面积。 | | 11 | 15 | | 收到 $16\Delta^2 = 15$。因此面积 $\Delta = \sqrt{\frac{15}{16}} \approx 0.968245$。 | | 12 | | ? 1 2 4 | 询问由 $a_1$,$a_2$ 和 $a_4$ 组成的三角形面积。 | | 13 | 135 | | 收到 $16\Delta^2 = 135$。因此面积 $\Delta = \sqrt{\frac{135}{16}} \approx 2.904738$。 | | 14 | | ! 3 2 1 4 2 2 | 找到了唯一答案,即 $a = [3, 2, 1, 4, 2, 2]$。 | 根据步骤 $10$ 和 $11$,我们可以推断出多重集 $\left\{a_3, a_5, a_6\right\}$ 必须是 $\left\{2, 2, 1\right\}$。 根据步骤 $8$ 和 $9$,多重集 $\left\{a_1, a_5, a_6\right\}$ 必须是 $\left\{4, 4, 1\right\}$ 或 $\left\{3, 2, 2\right\}$。 由于 $\left\{a_3, a_5, a_6\right\}$ 和 $\left\{a_1, a_5, a_6\right\}$ 共享了 $a_5$ 和 $a_6$,我们可以断定 $a_5 = a_6 = 2$,同时 $a_1 = 3$ 且 $a_3 = 1$。 根据步骤 $6$ 和 $7$,我们知道 $a_5 = a_6 = 2$,且 $a_4$、$a_5$ 和 $a_6$ 无法组成非退化三角形,因此 $a_4 = 4$。 结合所有已知信息,只有 $a_2 = 2$ 能够同时满足步骤 $2, 3, 4, 5, 12, 13$ 中所做的全部询问。 在第三个样例中,一个满足询问的数组是 $[1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]$。