这是一道交互题。
JOI 君是一位专业的团子师傅。在 JOI 君的店里,团子的颜色很有讲究。一共有
一流团子串是 JOI 君的店里的招牌食品。制作一个一流团子串,需要将
对于每一种颜色,JOI 君都制作了
为了避免在颜色上犯错误,JOI 君将会启用他的团子检测器。如果 JOI 君输入一些团子的编号,团子检测器会返回使用这些团子能制作的一流团子串的个数的最大值。当然,前提是充分使用竹签。
JOI 君希望能通过使用若干次团子检测器将
JOI 君想在使用不超过
请写一个程序,对于给定的团子的信息,实现 JOI 君使用不超过
任务
本题只支持符合 C++11 及以上标准的 C++ 语言。
你必须引用 dango3.h
。
你需要实现如下过程:
void Solve(int N, int M);
对于每组测试数据,该函数会被调用恰好一次。
- 参数
是团子的颜色数 。 - 参数
是 JOI 君想制作的一流团子串的个数 。
你的程序可以调用以下函数。
int Query(const std::vector<int> &x);
你的程序可以通过调用这个函数来使用团子检测器。
- 参数
是输入给团子检测器的团子的编号列表。 - 该函数返回使用
中的团子能制作的一流团子串的最大值。 中的每个元素都应当是 中的整数。否则你的程序会被判定为 Wrong Answer [1]。 中的元素应当互不相同。否则你的程序会被判定为 Wrong Answer [2]。- 你的程序不得调用该函数超过
次。否则你的程序会被判定为 Wrong Answer [3]。
void Answer(const std::vector<int> &a);
你的程序可以通过调用这个程序来报告分组方案。
- 参数
是你分出的一组团子的编号列表。 的长度应当为 。否则你的程序会被判定为 Wrong Answer [4]。 中的每个元素都应当是 中的整数。否则你的程序会被判定为 Wrong Answer [5]。- 在整个过程中,同一个团子不能出现在参数中多于一次。否则你的程序会被判定为 Wrong Answer [6]。
- 如果用
中的团子并不能制作一个一流团子串,你的程序会被判定为 Wrong Answer [7]。 - 该函数应当被调用恰好
次。否则你的程序会被判定为 Wrong Answer [6]。
提示
- 你的程序可以实现其他函数以供内部使用,或者使用全局变量。
- 你的程序不得使用标准输入输出流,也不得以任何方式访问任何文件。然而,你可以输出调试信息到标准错误流。
样例评分器
见附件下载中的 grader.cpp
。
样例输入格式
第一行,两个正整数
第二行,
样例输出格式
- 如果你的程序被判定为正确,样例评分器会输出调用
的次数,如Accepted: 2022
。 - 如果你的程序被判定为任意一种 Wrong Answer,样例评分器会输出其类型,如
Wrong Answer [4]
。
如果你的程序属于多种 Wrong Answer,样例评分器只会输出其中一种。
样例一
input
3 2 3 3 1 2 1 2
explanation
以下是一组合法的交互过程:
调用 | 调用 | 返回值 |
---|---|---|
注意,这组样例不满足任意子任务的限制。
样例二
见附件下载中的 ex_dango3.in
。
这组样例满足子任务
数据范围与提示
对于所有测试数据,满足:
。- 对于每个
,恰有 个 满足 。 是正整数。 是一个 内的整数。
详细子任务附加限制及分值如下表所示:
子任务编号 | 附加限制 | 分值 |
---|---|---|
时间限制:
空间限制: