由于某些原因本题仅支持 C++, C++11 语言的提交。
Ringo 正在参加在新加坡举办的一个嘉年华活动。他的口袋里装有一些奖券,这些奖券可以在嘉年华的游戏展位使用。假设共有
Ringo 每种颜色的奖券有
一次奖券游戏要进行
首先,Ringo 从每种颜色的奖券中各选出一张奖券,形成一个
张奖券的集合。随后,游戏负责人记录下这个集合中奖券上的数字
。不需要考虑这 个整数的顺序。接下来,游戏负责人从一个幸运抽奖箱中抽取一张特殊卡片,上面印有整数
。对于上述集合中每一个奖券上的数字
,游戏负责人会计算 和 的差的绝对值。让 代表这 个差的绝对值之和。所得到的数字
就是 Ringo 本轮能够获得的奖励数额。一轮游戏结束后,本轮集合中的奖券全部被丢弃,不会在未来的轮次所使用。
当
通过仔细观察,Ringo 发现这个奖券游戏被操控了!实际上,幸运抽奖箱里面内置了一台打印机。在每一轮,游戏负责人首先找到一个能够最小化当前轮次游戏奖励的整数
知道了这些信息之后,Ringo 想要设计每轮游戏中的奖券分配方案,使得
实现细节
你必须引用 tickets.h
头文件。
你需要实现下面这个函数:
long long find_maximum(int k, std::vector<std::vector<int>> x)
:游戏的轮数。 :一个 的数组,记录了奖券上的数字。每种颜色的奖券按照上面的数字非递减顺序排序。这个函数只会被调用一次。
这个函数应该只调用一次函数
allocate_tickets
(参见下面的内容),它描述了 轮游戏中的奖券分配方案,每一轮对应一个奖券集合。奖券的分配方案应该使得所获奖励数额之和达到最大。这个函数需要返回能够获得的最大的奖励数额之和。
函数 allocate_tickets
按照如下的方式进行定义:
void allocate_tickets(std::vector<std::vector<int>> s)
:一个 的数组。如果第 种颜色的第 张奖券如果被分配到了第 轮游戏,那么 的值应该为 ;如果未被使用,应该为 。对于
,在 中,每个值 必须只出现一次,而其他元素应该为 。如果存在多种奖券分配方案能够达到最优的奖励数值,可以给出其中任何一种最优方案。
输入格式
评测程序示例按照下面的格式读入数据:
- 第
行: - 第
行( ):
输出格式
评测程序示例按照下面的格式打印你的答案:
- 第
行:find_maximum
的返回值 - 第
行( ):
样例一
input
2 3 2 0 2 5 1 1 3
output
7 0 -1 1 -1 1 0
explanation
考虑下面的函数调用:
find_maximum(2, [[0, 2, 5],[1, 1, 3]])
这意味着:
- 游戏共进行
一种能够获得最优奖励数值的分配方案是:
在第
轮,Ringo 选择第 种颜色的第 张奖券(印有整数 )和第 种颜色的第 张奖券(印有整数 )。本轮获得的最小奖励数额是 。例如,游戏负责人可以选择 : 。在第
轮,Ringo 选择第 种颜色的第 张奖券(印有整数 )和第 种颜色的第 张奖券(印有整数 )。本轮能够获得的最小奖励是 。例如,游戏负责人可以选择 : 。因此,本次游戏两轮的奖励之和为
。
为了给出这个分配方案,函数 find_maximum
应该按照如下方式调用 allocate_tickets
:
allocate_tickets([[0, -1, 1], [-1, 1, 0]])
最终,函数 find_maximum
应该返回数字
样例二
input
4 2 1 5 9 1 4 3 6 2 7
output
12 -1 0 0 -1 0 -1 -1 0
eplanation
考虑下面的函数调用:
find_maximum(1, [[5, 9], [1, 4], [3, 6], [2, 7]])
这意味着:
- 游戏只进行一轮;
- 第
种颜色奖券上的数字分别是 和 ; - 第
种颜色奖券上的数字分别是 和 ; - 第
种颜色奖券上的数字分别是 和 ; - 第
种颜色奖券上的数字分别是 和 ;
一种能够获得最优奖励的分配方案是:
- 在第
轮,Ringo 选择第 种颜色的第 张奖券(印有整数 ) ,第 种颜色的第 张奖券(印有整数 ),第 种颜色的第 张奖券(印有整数 ),第 种颜色的第 张奖券(印有整数 )。本轮能够获得的最小奖励是 。例如,游戏负责人可以选择 :
为了给出这个分配方案,函数 find_maximum
应该按照如下方式调用 allocate_tickets
:
allocate_tickets([[-1, 0], [0, -1], [0, -1], [-1, 0]])
最终,函数 find_maximum
应该返回数字
限制与约定
对于
且 为偶数 (对于所有的 且 ) (对于所有的 且 )
子任务 | 附加限制 | 分值 |
---|---|---|
没有其他限制 |
时间限制:
空间限制: