luogu#P10642. [BalticOI 2022 Day1] Art Collection
[BalticOI 2022 Day1] Art Collection
题目描述
有一个值域 的未知排列 。你每次可以询问一个排列 。交互库会返回满足在排列 中 出现在 前面,在排列 中 出现在 后面的有序对 的数量。你需要猜出排列 。
实现细节
你无需在程序开头引用头文件 art.h
,你只需要在代码开头加入以下代码。
#include <vector>
void answer(std::vector<int>);
int publish(std::vector<int>);
你需要实现一个函数 void solve(int N)
,这个函数可以调用如下函数:
int publish(std::vector<int> R)
- 该函数可以向交互库询问排列 , 应当是一个值域 的排列。
- 该函数至多能被调用 次。
void answer(std::vector<int> R)
- 该函数向交互库提交答案,表示你猜测的排列。
- 你必须恰好调用该函数一次。
输入格式
样例交互库从标准输入流读入以下数据:
第一行,一个整数 。
第二行, 个整数,第 个数表示 。
如果输入不符格式,则直接判为 Invalid input!
。
输出格式
样例交互库向标准输入流输出以下数据:
在你每一次调用 public
函数后,交互库都会输出一行,表示你的交互内容。
在你调用 answer
函数,交互库会输出两行。
第一行, 个整数,表示你回答的排列。
第二行会输出交互库的判决。若回答正确会返回 Correct: x published ranking(s).
,其中 是你的交互次数。否则返回 Wrong answer!
。
提示
样例交互
考虑排列 是 。
样例中进行的交互如下:
调用 | 返回值 | 解释 |
---|---|---|
publish({1, 2, 3}) |
1 | 合法有序对为 |
publish({2, 3, 1}) |
3 | 合法有序对为 |
answer({1, 3, 2}) |
回答与正确答案相符 |
数据范围与提示
- 子任务 ( 分):
- 子任务 ( 分):
- 子任务 ( 分):
- 子任务 ( 分):
- 子任务 ( 分):
- 子任务 ( 分):没有特殊限制
对于所有数据,满足