{"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$ 次提问来获取信息，每次提问只能了解某两个元素之间的关系。\n\n现在请你把这 $N$ 个元素排成一行，使得每个元素都小于右边与它相邻的元素。\n\n你可以通过我们预设的 bool 函数 compare 来获得两个元素之间的大小关系。\n\n例如，编号为 $a$ 和 $b$ 的两个元素，如果元素 $a$ 小于元素 $b$，则 compare(a,b) 返回 true，否则返回 false。\n\n将 $N$ 个元素排好序后，把他们的编号以数组的形式输出，如果答案不唯一，则输出任意一个均可。\n\n---\n\n为了适配 OJ，本题交互格式进行修改。改为 I/O 交互。\n\n```cpp\nbool compare(int a, int b)\n{\n    cout << \"? \" << a << ' ' << b << endl;\n    bool t;\n    cin >> t;\n    return t;\n}\n```\n\n请在代码里填写此函数。**擅自修改内容后果自负。**\n\n## Input\n\n交互库会先给出一个正整数 $N$ 表示元素数量。\n\n之后的每次回答，交互库会返回 $1$ 或 $0$ 表示大小关系。$1$ 代表 $\\text{true}$，$0$ 代表 $\\text{false}$。\n\n## Output\n\n你可以使用题面中的 `compare` 函数进行提问。如要自己编写询问，询问格式为 `? a b`。\n\n输出答案之前请先给出一个感叹号 `!`。之后用空格分割这 $n$ 个编号。具体见样例 #1.\n\n[samples]\n\n## Note\n\n测试数据满足 $1 \\le N \\le 1000$。","is_translate":false,"language":"English"}],"meta":{"iden":"LGP10451","tags":["交互题","Special Judge","O2优化"],"sample_group":[["3\n\n1\n\n0\n\n0","? 1 2\n\n? 1 3\n\n? 2 3\n\n! 3 1 2"]],"created_at":"2026-03-03 11:09:25"}}