[BalticOI 2022] Art Collection (Day1)

Luogu
IDLGP10642
Time5000ms
Memory2048MB
DifficultyP5
2022交互题Special JudgeBalticOI(波罗的海)
有一个值域 $[1,n]$ 的未知排列 $P$。你每次可以询问一个排列 $R$。交互库会返回满足在排列 $P$ 中 $i$ 出现在 $j$ 前面,在排列 $R$ 中 $i$ 出现在 $j$ 后面的有序对 $(i,j)$ 的数量。你需要猜出排列 $P$。 ### 实现细节 你无需在程序开头引用头文件 `art.h`,你只需要在代码开头加入以下代码。 ```cpp #include <vector> void answer(std::vector<int>); int publish(std::vector<int>); ``` 你需要实现一个函数 `void solve(int N)`,这个函数可以调用如下函数: - `int publish(std::vector<int> R)` - 该函数可以向交互库询问排列 $R$,$R$ 应当是一个值域 $[1,n]$ 的排列。 - 该函数至多能被调用 $4000$ 次。 - `void answer(std::vector<int> R)` - 该函数向交互库提交答案,表示你猜测的排列。 - 你必须恰好调用该函数一次。 ## Input 样例交互库从标准输入流读入以下数据: 第一行,一个整数 $n$。 第二行,$n$ 个整数,第 $i$ 个数表示 $P_i$。 如果输入不符格式,则直接判为 `Invalid input!`。 ## Output 样例交互库向标准输入流输出以下数据: 在你每一次调用 `public` 函数后,交互库都会输出一行,表示你的交互内容。 在你调用 `answer` 函数,交互库会输出两行。 第一行,$n$ 个整数,表示你回答的排列。 第二行会输出交互库的判决。若回答正确会返回 `Correct: x published ranking(s).`,其中 $x$ 是你的交互次数。否则返回 `Wrong answer!`。 [samples] ## Note ### 样例交互 考虑排列 $P$ 是 $\{1,3,2\}$。 样例中进行的交互如下: | 调用 | 返回值 | 解释 | | :------------------: | :----: | :------------------------------: | | `publish({1, 2, 3})` | 1 | 合法有序对为 $(3,2)$ | | `publish({2, 3, 1})` | 3 | 合法有序对为 $(1,3),(1,2),(3,2)$ | | `answer({1, 3, 2})` | | 回答与正确答案相符 | ### 数据范围与提示 - 子任务 $1$ ($5$ 分):$N \leq 6$ - 子任务 $2$ ($15$ 分):$N \leq 40$ - 子任务 $3$ ($15$ 分):$N \leq 250$ - 子任务 $4$ ($15$ 分):$N \leq 444$ - 子任务 $5$ ($20$ 分):$N \leq 2000$ - 子任务 $6$ ($30$ 分):没有特殊限制 对于所有数据,满足 $2\leq N \leq 4000$
API Response (JSON)
{
  "problem": {
    "name": "[BalticOI 2022] Art Collection (Day1)",
    "description": {
      "content": "有一个值域 $[1,n]$ 的未知排列 $P$。你每次可以询问一个排列 $R$。交互库会返回满足在排列 $P$ 中 $i$ 出现在 $j$ 前面,在排列 $R$ 中 $i$ 出现在 $j$ 后面的有序对 $(i,j)$ 的数量。你需要猜出排列 $P$。 ### 实现细节 你无需在程序开头引用头文件 `art.h`,你只需要在代码开头加入以下代码。 ```cpp #include <vecto",
      "description_type": "Markdown"
    },
    "platform": "Luogu",
    "limit": {
      "time_limit": 5000,
      "memory_limit": 2097152
    },
    "difficulty": {
      "LuoguStyle": "P5"
    },
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "LGP10642"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "有一个值域 $[1,n]$ 的未知排列 $P$。你每次可以询问一个排列 $R$。交互库会返回满足在排列 $P$ 中 $i$ 出现在 $j$ 前面,在排列 $R$ 中 $i$ 出现在 $j$ 后面的有序对 $(i,j)$ 的数量。你需要猜出排列 $P$。\n\n### 实现细节\n\n你无需在程序开头引用头文件 `art.h`,你只需要在代码开头加入以下代码。\n\n```cpp\n#include <vecto...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments