QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 1024 MB Total points: 100 Interactive

#13890. 奥运会闭幕式

Statistics

皮尔特沃夫(Piltover)奥运会开幕式上,有 $N$ 名奥运运动员排成一队。队伍中的第 $i$ 名运动员属于皮尔特沃夫的某个区域 $D_i$,但组织者忘记告诉你每位运动员属于哪个区域。更糟糕的是,仪式即将开始,如果运动员不与来自同一区域的同伴站在一起,他们将无人可交谈。为了让所有运动员感到更舒适,你希望让来自同一区域的所有运动员在队伍中相邻。此外,尽管你没有运动员所属区域的列表,但你有一个设备可以与组织者沟通,并获取有关运动员所属区域的信息。你能在仪式开始前,找到一种让运动员感到舒适的排列方式吗?

输入格式

输入只有一行,包含一个整数 $N$ ($1 \le N \le 1\,000$),表示奥运运动员的数量。

交互

这是一个交互式问题。你可以使用标准输入和输出与奥运组织者进行交互,但在仪式开始前你只有时间提问 $10\,000$ 次。

要进行提问,请按以下格式写入标准输出:

  • ? l r ($1 \le l \le r \le N$) — 列表 $D_l, \dots, D_r$ 中有多少个不同的值?组织者将回复 ! k 来告诉你其中有 $k$ 个不同的值。他们有一个坏习惯,即在每个回答前都会加上 !,无论你如何抱怨他们都不会改正。

要提交期望的运动员排列,请按以下格式写入标准输出:

  • ! P_1, \dots, P_N ($1 \le P_i \le N$ 且所有 $P_i$ 互不相同) — 运动员 $P_i$ 应该排在第 $i$ 个位置,并且来自同一区域的运动员应该排在一起。更准确地说,对于任意 $1 \le i \le j \le k \le N$,如果 $D_{P_i} = D_{P_k}$,则 $D_{P_i} = D_{P_j}$。

可能存在多种满足上述条件的排列。你可以输出其中任意一种。

评测机是非适应性(non-adaptive)的,这意味着对于给定的测试用例,在参赛程序开始查询之前,$D_1, \dots, D_N$ 的值就已经确定。

允许的总查询次数为 $10^4$ 次,这意味着你的程序最多只能输出 $10^4$ 行以 ? 开头的询问。特别地,最终的答案不计入查询次数。如果超过了查询次数限制,你将获得 Wrong Answer 的评测结果。

任何不符合指定格式的查询都将立即导致 Wrong Answer 的评测结果。在打印查询后,请不要忘记输出换行符并刷新(flush)输出缓冲区。否则,你可能会获得 Idleness limit exceeded 的评测结果。你可以使用以下方法:

  • C++ 中的 fflush(stdout)cout.flush()
  • Java 中的 System.out.flush()
  • Python 中的 stdout.flush()
  • 其他语言请参阅相关文档。

样例

输入格式 1

3
! 1

输出格式 1

? 2 3
! 3 2 1

说明

在样例交互中:

  1. 评测机输入 $N = 3$。
  2. 选手程序询问 ? 2 3
  3. 评测机回答 ! 1,表示 $D_2$ 和 $D_3$ 相同。
  4. 选手程序输出最终排列 ! 3 2 1。由于 $D_2 = D_3$,在排列 $P = [3, 2, 1]$ 中,对应的区域序列为 $[D_3, D_2, D_1]$。因为 $D_3 = D_2$,相同区域的元素依然相邻,满足条件。

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.