题目名称 |
|
百万富翁 |
|
题目类型 |
|
交互型 |
|
目录 |
richest |
可执行文件名 |
输入文件名 |
richest.in |
输出文件名 |
richest.out |
每个测试点时限 |
秒 |
内存限制 |
|
测试点数目 |
|
测试点是否等分 |
否 |
预测试点数目 |
|
提交源程序文件名
这是一道交互题。
【题目描述】
小 Y 的银行有 个客户,编号为 到 。客户 有 元存款,且客户之间的存款金额互不相同。
小 P 是小 Y 的深度合作伙伴,他希望知道哪个客户的存款最多。小 P 无法直接获取客户的存款金额,但他可以依次发送若干次请求,每次请求包含若干个查询,每个查询是一个二元组 ,表示小 P 想知道客户 和客户 的存款金额哪个更多。如果 ,小 Y 会回答 ,否则回答 。
小 P 的请求数 和所有请求的查询次数总和 有上限,他希望你帮他写一个程序来找到存款最多的客户。
【实现细节】
选手不需要,也不应该实现 main
函数。
选手应确保提交的程序包含头文件 richest.h
,可在程序开头加入以下代码实现:
选手需要实现以下函数:
int richest(int N, int T, int S);
选手可以通过调用以下函数向交互库发送一次请求:
std::vector<int> ask(std::vector<int> a, std::vector<int> b);
题目保证在规定的请求与查询次数限制下,交互库运行所需的时间不超过 秒;交互库使用的内存大小固定,且不超过 。
【测试程序方式】
试题目录下的 grader.cpp
是提供的交互库参考实现,最终测试时所用的交互库实现与该参考实现有所不同,因此选手的解法不应该依赖交互库实现。
选手可以在本题目录下使用如下命令编译得到可执行程序:
g++ grader.cpp richest.cpp ‐o richest ‐O2 ‐std=c++14 ‐static
对于编译得到的可执行程序: