#Y1017. Zeta-9

Zeta-9

本题是一道交互题。

题目描述

在遥远的星系 Zeta-9,有一座名为“观测之塔”的文明遗迹。考古学家在其中发现了一套神秘的机制——“频率回响装置”。该装置似乎能记录某种古代文明用于通信的频率编码,但由于时间侵蚀,这些频率值已经不再直接可见。

你是频率破译小组的一员,被派遣到观测之塔,希望能借助有限的信息重建出装置记录的频率碎片。根据当前能量稳定性模拟系统的反馈,该装置将在启动时生成 nn 个核心频率节点,分别用一个序列 A0,A1,,An1A_0, A_1, \dots, A_{n-1} 表示。这些频率会暂时存在于系统的“模态缓存”中,但不会直接暴露给你。

你的任务,是在模态缓存释放前,尽可能准确地推断出这些频率节点的值。

交互方式

你可以进行以下三种操作:

  1. !:获取需要猜测的数字数量 nn
  2. ?:猜测某个数字。本操作包含 22 个参数:需要猜测的数字的序号(序号从 00 开始)以及猜测值。当你猜测的值小于实际值时,返回值为 1-1;当你猜测的值大于实际值时,返回值为 11;当恰好猜对时,返回值为 00
  3. *:提交猜测结果。本操作包含 nn 个参数,即 nn 个数的猜测结果。

下面给出本题使用 C++ 交互的例子:

  1. 操作 11
cout << "!" << endl;
  1. 操作 22
cout << "? " << i << ' ' << k << endl;
//代表向系统询问,序号为 i 的数字是 k 吗?
  1. 操作 33
cout << "* ";
/*提交答案
for (int i = 1; i <= n; i++)
    cout << a[i] << ' ';
*/

请注意,很多语言的输入 / 输出库都会带有缓存,请在写入操作请求后手动刷新缓存,否则可能会有未知的错误。

C++ 可以这样刷新缓存:

std::cout << std::flush;
// 或 std::cout << x << std::endl;

说明/提示

  • 1n10001 \leq n \leq 1000
  • 0Ai10000000 \leq A_i \leq 1000000