#P4530. [CTSC2006] 投篮游戏
[CTSC2006] 投篮游戏
题目描述
在大学里,体育课有很多门,每个人都可以选自己最喜欢的项目。King这学期选的是篮球,因为篮球课的老师是一个十分有趣的人。
上课的第一天,老师宣布了这门课的评分规则:
有n个篮球(n ≥ m),老师事先在每个球上写了一个整数(不一定相同,绝对值小于10000)。 有m个篮,每个篮板上有一个计分器,显示一个整数。一个学生开始考核前先将所有计分器显示值赋为1。
每个学生考核时要进行n次投篮:选择任意一个篮球投向任意一个篮。最后他必须将所有球全部投出且每个球恰好投出一次,要求每个篮至少被投进过一次。
如果学生将一个写有整数x的篮球投进了某个计分器显示为y的篮,则该篮板上的计分器显示值将从y变成y×x。
一个学生的原始得分S定义为m个计分器的显示值之和,如果S越大则老师给这个学生的最终打分越高(事实上,老师根据名次按照正态分布给分,但此超出本题了讨论范围)。
King是一个神投手,他保证能将n个球全都投进。但是King的数学十分糟糕,他不知道该如何安排投篮,才能使得自己的原始得分最大,你能帮帮他吗?
输入格式
输入有多组数据,每组数据有两行:
第一行两个整数n,m。
第二行n个整数,用一个空格分开,表示老师在n个篮球上分别写下的整数。
文件以0 0结尾。一个文件中最多只有10组数据。
输出格式
每组数据一行,包含一个整数,表示最大可能的原始得分。
提示:可能超过任何基本整数类型。也可能比0小。
10 2
0 -1 -2 0 1 2 3 2 10 1
10 3
0 -1 -2 0 1 2 3 2 10 1
0 0
240
241
提示
【约定】
-
1≤ m≤n≤ 2000
-
恰有40%的数据满足n≤100
【样例说明】
第一组数据有多解,其中一解为:(0,0)(-1,-2,1,2,3,2,10,1)
第二组数据有多解,其中一解为:(0,0)(1,1)(-1,-2,2,3,2,10)