QOJ.ac

QOJ

Limite de temps : 1 s Limite de mémoire : 1024 MB Points totaux : 100 Interactif

#14871. 外星探索

Statistiques

经过多年的规划和建造,你终于成功制造出了属于自己的飞船!你立即登上了飞船,开启了前往大拟人猪座(Big Anthropomorphic Pig Constellation)的处女航。几年后,你到达了该星座,并降落在最近的星球上,准备拍些照片,顺便买些纪念品。当你使用飞船内置的翻译器与当地的纪念品商贩讨价还价时,突然收到通知:飞船燃料不足!频繁使用翻译器消耗了比预期更多的燃料,你无法返回地球了。你焦急地寻找加油站。幸运的是,一位当地人给你指了一家可疑的小店,它与你家乡的加油站惊人地相似。

飞船的灵感来源。CC BY-SA 3.0,作者 Edwtie,来自维基共享资源

虽然加油站的外观可能与地球上的相似,但内部却完全不同。在一个长货架上摆放着许多燃料罐,侧面印有奇怪的符号。根据你对火箭燃料的研究,你推断这些符号可能表示罐中燃料的氧化值(oxydilation level)。这些火箭燃料都无法单独燃烧。相反,将两种氧化值分别为 $o_x$ 和 $o_y$ 的火箭燃料混合,可以得到燃烧时间为 $\sqrt{|o_x - o_y|}$ 的燃料。你只买得起三个满罐的燃料,且火箭燃料的燃烧时间是可累加的,因此将氧化值分别为 $o_x$、$o_y$ 和 $o_z$ 的火箭燃料混合,得到的总燃烧时间为:

$$\sqrt{|o_x - o_y|} + \sqrt{|o_y - o_z|} + \sqrt{|o_z - o_x|}$$

你只能使用飞船的翻译器来解码表示氧化值的符号。不幸的是,由于飞船燃料不足,在燃料完全耗尽之前,你最多只能使用翻译器查询 $50$ 个燃料罐。幸运的是,你已知这些火箭燃料是按照氧化值非降序的顺序存放的。你能找出应该购买哪三个燃料罐,以使总燃烧时间最大化吗?

交互格式

这是一个交互式问题。你的程序将与交互器(interactor)进行交互,交互器会读取你程序的标准输出,并写入你程序的标准输入。交互需要遵循以下协议:

首先,交互器会发送一行,包含一个整数 $n$($3 \le n \le 2 \cdot 10^5$),表示火箭燃料的种类数。

然后,你的程序最多可以进行 $50$ 次询问,以找到最优的三个燃料罐。每次询问时,输出一行格式为 ? i($1 \le i \le n$)的内容。交互器将回应一行,包含一个整数 $o_i$($|o_i| \le 10^6$),表示第 $i$ 个燃料罐中燃料的氧化值。

当你确定了最优的三个不同的燃料罐 $x$、$y$ 和 $z$($1 \le x, y, z \le n$,$x \neq y$,$x \neq z$,$y \neq z$)时,输出一行格式为 ! x y z 的内容,随后交互将停止。输出答案不计入询问次数。

如果存在多个可行解,你可以输出其中任意一个。

交互器是非适应性的(non-adaptive):燃料罐的氧化值在最开始就是固定好的,不会根据你的询问而改变。

请确保在每次写入后刷新缓冲区(flush)。

我们提供了一个测试工具来帮助你开发解决方案。

使用超过 $50$ 次询问将导致解答错误(Wrong Answer)。

样例

样例交互 1

从标准输入读取: 4
向标准输出写入: ? 1
从标准输入读取: 1
向标准输出写入: ? 3
从标准输入读取: 3
向标准输出写入: ? 4
从标准输入读取: 3
向标准输出写入: ! 1 2 3

样例交互 2

从标准输入读取: 6
向标准输出写入: ? 1
从标准输入读取: -5
向标准输出写入: ? 6
从标准输入读取: 5
向标准输出写入: ? 2
从标准输入读取: -3
向标准输出写入: ? 5
从标准输入读取: 3
向标准输出写入: ? 3
从标准输入读取: -1
向标准输出写入: ? 4
从标准输入读取: 1
向标准输出写入: ! 4 6 1

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.