CF1028G Guess the number

题目描述

本题为交互题。 你需要猜出一个隐藏的数字 $x$,其范围为 $1$ 到 $M = 10004205361450474$ 之间(包含两端)。 你最多可以进行 $5$ 次询问。 每次询问时,你可以输出一个长度为 $k$ 的递增序列($k \leq x$),序列中的每个整数都在 $1$ 到 $M$ 之间(包含两端)。你将会获得以下几种反馈之一: - 如果隐藏数字就在你询问的序列中,你立即获胜; - 否则,你会被告知隐藏数字相对于你询问序列的位置,即:隐藏数字小于序列中所有数字、大于序列中所有数字,或者会给出一个 $i$,表示隐藏数字 $x$ 位于第 $i$ 个和第 $i+1$ 个数字之间。 具体交互方式见下文说明。 请注意,交互器是自适应的,即隐藏数字可以根据你提出的询问动态变化。但保证对于任何解法,交互器的行为都与隐藏数字预先固定的情况无法区分。 仅允许对隐藏数字固定的情况进行 Hack。Hack 时输入一个 $1$ 到 $M$ 之间的整数即可。在所有预测试中,隐藏数字也是固定的。

输入格式

无输入。

输出格式

你最多可以进行 $5$ 次询问。每次询问时,输出一个整数 $k$($1 \leq k \leq 10^4$),然后输出一个递增的长度为 $k$ 的序列 $t_0 < t_1 < \ldots < t_{k-1}$,每个数字都在 $1$ 到 $M$ 之间。若 $k > x$,你会失败。 你会收到一个整数作为反馈: - 如果是 $-2$,表示你的询问无效或你已经失败。收到 $-2$ 后应立即退出,否则会收到 Wrong answer 判定。否则你可能会因为继续读取已关闭的流而得到任意判定。 - 如果是 $-1$,表示你猜中了数字,也应立即退出。 - 否则你会收到一个 $0$ 到 $k$ 之间的整数 $i$,表示隐藏数字相对于你输出的序列的位置。如果 $i = 0$,则 $x < t_0$;如果 $i = k$,则 $t_{k-1} < x$;否则 $t_{i-1} < x < t_i$。 每次输出询问后不要忘记换行并刷新输出缓冲区。否则会因超时被判定为 Idleness limit exceeded。具体刷新方式如下: - C++:fflush(stdout) 或 cout.flush() - Java:System.out.flush() - Pascal:flush(output) - Python:stdout.flush() - 其它语言请查阅相关文档。

说明/提示

在第一个示例中,隐藏数字为 $5$。 由 ChatGPT 4.1 翻译