#CF1945F. 基里尔与蘑菇
基里尔与蘑菇
F. 基里尔与蘑菇
单个测试点时间限制: 秒 单个测试点内存限制: 兆字节
当营地里的所有人都睡熟后,基里尔偷偷溜出帐篷,前往智慧橡树下去采蘑菇。
已知橡树下长着 个蘑菇,每个蘑菇都有魔力值 。基里尔非常想用这些蘑菇炼制一瓶强度最大的魔法药剂。
药剂的强度等于所选蘑菇的数量乘以这些蘑菇中最小的魔力值。 炼制药剂时,基里尔会依次摘下橡树下的蘑菇,可以按任意顺序采摘。
然而事情并没有那么简单。智慧橡树告诉了基里尔一个 到 的排列 。 如果基里尔一共只采摘 个蘑菇,那么下标为 的所有蘑菇的魔力值都会变为 。 基里尔不会使用魔力值为 的蘑菇来炼药。
你的任务是帮助基里尔采蘑菇,使得他能炼出强度尽可能大的药剂。 同时,基里尔不太敢在橡树旁待太久,所以在所有能达到最大强度的方案中,你需要找出使用蘑菇数量最少的那一个。
长度为 的排列是指包含 到 这 个不同整数、按任意顺序排列的数组。 例如, 是一个排列,但 不是(数字 出现了两次), 也不是( 但数组中出现了 )。
输入格式
输入包含多组测试数据。 第一行包含一个整数 ()—— 测试用例的数量。
每组测试用例格式如下: 第一行包含一个整数 ()—— 蘑菇的数量。
第二行包含 个整数 ()—— 每个蘑菇的魔力值。
第三行包含一个 到 的排列 。
保证所有测试用例的 之和不超过 。
输出格式
对于每组测试用例,输出两个用空格隔开的整数:
- 能炼制出的药剂的最大强度
- 达到该强度所需的最少蘑菇数量
样例输入
6
3
9 8 14
3 2 1
5
1 2 3 4 5
1 2 3 4 5
6
1 2 3 4 5 6
6 5 4 3 2 1
5
1 4 6 10 10
2 1 4 5 3
4
2 2 5 5
4 2 3 1
5
1 2 9 10 10
1 4 2 3 5
样例输出
16 2
9 3
8 2
20 2
5 1
20 2
样例说明
在第一个样例中,需要选择下标为 和 的蘑菇。 药剂强度为 。 注意:采摘两个蘑菇后,下标为 的蘑菇魔力值会变为 。