Innovative Business

Luogu
IDLGP10451
Time1000ms
Memory512MB
DifficultyP3
交互题Special JudgeO2优化
有 $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 << "? " << a << ' ' << b << endl; bool t; cin >> t; return t; } ``` 请在代码里填写此函数。**擅自修改内容后果自负。** ## Input 交互库会先给出一个正整数 $N$ 表示元素数量。 之后的每次回答,交互库会返回 $1$ 或 $0$ 表示大小关系。$1$ 代表 $\text{true}$,$0$ 代表 $\text{false}$。 ## Output 你可以使用题面中的 `compare` 函数进行提问。如要自己编写询问,询问格式为 `? a b`。 输出答案之前请先给出一个感叹号 `!`。之后用空格分割这 $n$ 个编号。具体见样例 #1. [samples] ## Note 测试数据满足 $1 \le N \le 1000$。
Samples
Input #1
3

1

0

0
Output #1
? 1 2

? 1 3

? 2 3

! 3 1 2
API Response (JSON)
{
  "problem": {
    "name": "Innovative Business",
    "description": {
      "content": "有 $N$ 个元素,编号 $1,2,\\dots,N$,每一对元素之间的大小关系是确定的,关系具有反对称性,但不具有传递性。 **注意**:不存在两个元素大小相等的情况。 也就是说,元素的大小关系是 $N$ 个点与 $\\frac{N \\times (N-1)}{2}$ 条有向边构成的任意有向图。 然而,这是一道交互式试题,这些关系不能一次性得知,你必须通过不超过 $10000$ 次提问来获取信",
      "description_type": "Markdown"
    },
    "platform": "Luogu",
    "limit": {
      "time_limit": 1000,
      "memory_limit": 524288
    },
    "difficulty": {
      "LuoguStyle": "P3"
    },
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "LGP10451"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "有 $N$ 个元素,编号 $1,2,\\dots,N$,每一对元素之间的大小关系是确定的,关系具有反对称性,但不具有传递性。\n\n**注意**:不存在两个元素大小相等的情况。\n\n也就是说,元素的大小关系是 $N$ 个点与 $\\frac{N \\times (N-1)}{2}$ 条有向边构成的任意有向图。\n\n然而,这是一道交互式试题,这些关系不能一次性得知,你必须通过不超过 $10000$ 次提问来获取信...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments