#CF3704. 最大乘积反击
最大乘积反击
题目描述
给定一个包含 个整数的数组 ,对于每个 ,以下不等式成立:。
你可以从数组开头删除任意数量(可能为 )的元素,也可以从数组末尾删除任意数量(可能为 )的元素,还可以删除整个数组。
你需要回答以下问题:应该从数组开头删除多少个元素,以及应该从数组末尾删除多少个元素,使结果成为一个元素乘积最大的数组。如果有多种方法可以得到乘积最大的数组,则允许输出任意一种。
假设空数组(长度为 的数组)的元素乘积为 。
输入格式
输入数据的第一行包含一个整数 ——测试中测试用例的数量。
接下来是每个测试用例的描述。
每个测试用例描述的第一行包含一个整数 ——数组 的长度。
接下来一行包含 个整数 ——数组 的元素。
保证所有测试用例中 的总和不超过 。
输出格式
对于每个测试用例,请输出两个非负整数 和 ,以便在从数组开头删除 个元素和从数组末尾删除 个元素后,数组数字的乘积(乘法)最大化。
如果有多种方法可以获得最大乘积,则允许任意输出其中任意一种。空数组的数字积为 。
测试样例
样例说明
在第一个案例中,最大乘积的最大值为 。 因此,我们可以删除前三个元素(得到数组 ),或者删除最后两个和第一个元素(也得到数组 ),或者只删除最后两个元素(得到数组 )。 因此,在第一个案例中,答案是 3 0
或 1 2
或 0 2
。
在第二个案例中,乘积的最大值是 。 然后我们可以从数组中删除所有元素,因为空数组的乘积值为 。 因此,答案是 3 0
,但是还有其他可能的答案。
在第三个案例中,我们可以删除数组的前两个元素。 然后我们得到数组:。 得到的数组元素的乘积是 。 这个值是可以获得的最大值。 因此,对于这种情况,答案是 2 0
。