P10451 Innovative Business

题目描述

有 $N$ 个元素,编号 $1,2,\dots,N$,每一对元素之间的大小关系是确定的,关系具有反对称性,但不具有传递性。 **注意**:不存在两个元素大小相等的情况。 也就是说,元素的大小关系是 $N$ 个点与 $\frac{N \times (N-1)}{2}$ 条有向边构成的任意有向图。 然而,这是一道交互式试题,这些关系不能一次性得知,你必须通过不超过 $10000$ 次提问来获取信息,每次提问只能了解某两个元素之间的关系。 现在请你把这 $N$ 个元素排成一行,使得每个元素都小于右边与它相邻的元素。 你可以通过我们预设的 bool 函数 compare 来获得两个元素之间的大小关系。 例如,编号为 $a$ 和 $b$ 的两个元素,如果元素 $a$ 小于元素 $b$,则 compare(a,b) 返回 true,否则返回 false。 将 $N$ 个元素排好序后,把他们的编号以数组的形式输出,如果答案不唯一,则输出任意一个均可。 --- 为了适配 OJ,本题交互格式进行修改。改为 I/O 交互。 ```cpp bool compare(int a, int b) { cout

输入格式

交互库会先给出一个正整数 $N$ 表示元素数量。 之后的每次回答,交互库会返回 $1$ 或 $0$ 表示大小关系。$1$ 代表 $\text{true}$,$0$ 代表 $\text{false}$。

输出格式

你可以使用题面中的 `compare` 函数进行提问。如要自己编写询问,询问格式为 `? a b`。 输出答案之前请先给出一个感叹号 `!`。之后用空格分割这 $n$ 个编号。具体见样例 #1.

说明/提示

测试数据满足 $1 \le N \le 1000$。