CF1945F Kirill and Mushrooms
题目描述
当营地里的每个人都进入梦乡后,基里尔便偷偷溜出帐篷,到智慧的橡树下采蘑菇。
众所周知,橡树下生长着 $n$ 朵蘑菇,每朵蘑菇都有 $v_i$ 的魔力。 基里尔非常想用这些蘑菇制作一种魔力最大的灵药。
灵药的强度等于其中蘑菇的数量与这些蘑菇中最小魔力的乘积。要配制灵药,基里尔要依次采摘生长在橡树下的蘑菇。基里尔可以按照任何顺序采集蘑菇。
然而,事情并非如此简单。智慧的橡树给出了一个排列 $p_1,p_2,...,p_n$,如果基里尔只采摘 $k$ 朵蘑菇,那么 $v_{p_1},v_{p_2},...,v_{p_{k-1}}$ 都将变为 $0$。 基里尔不会使用魔力为零的蘑菇来配制灵药。
你的任务是帮助基里尔采集蘑菇,使他能够酿造出最大魔力的灵药。然而,基里尔有点害怕在橡树旁待太久,所以在所有适合采集蘑菇的方案中,他要求你找到蘑菇数量最少的那个。
输入格式
每个数据包含多个测试用例。
第一行包含一个整数 $t$ ( $1 \le t \le 10^4$ ) ,表示测试用例的数量。
每个测试用例的第一行都包含一个整数 $n$($1 \le n \le 2\cdot 10^5$),表示蘑菇的数量。
第二行包含一个大小为 $n$ 的数组 $v$($1\le v_i \le 10^9$),表示蘑菇的魔力。
第三行包含一个长度为 $n$ 的排列 $p$。
保证所有测试用例中的 $n$ 的值之和不超过 $2\cdot 10^5$。
输出格式
对于每个测试用例,输出两个用空格隔开的整数,分别为可以酿造的灵药的最大浓度和基里尔为此需要使用的最少蘑菇数量。
说明/提示
在样例的第一个测试用例中,你需要采摘前两朵蘑菇,因此灵药的魔力等于 $2 \cdot \min(a_1, a_2) = 2 \cdot \min(9, 8) = 2 \cdot 8 = 16$。 请注意,采摘两朵蘑菇后,第三朵蘑菇的魔力将变为 $0$。