#331. [R53D]数组积

[R53D]数组积

时空限制

1S/512M

题目描述

给定两个长度为 nn 的整数数组 aabb。定义这两个数组的“积”为:

$$\sum_{i = 1}^{n} a_i \times b_i = a_1 b_1 + a_2 b_2 + \cdots + a_n b_n $$

你可以对数组 aa 执行以下两种操作,且总操作次数至多为 mm 次:

  • 选择一个下标 ii1in1 \le i \le n),使 a1,a2,,aia_1, a_2, \ldots, a_i 的值同时加 11
  • 选择一个下标 ii1in1 \le i \le n),使 a1,a2,,aia_1, a_2, \ldots, a_i 的值同时减 11

同时,给你一个长度为 nn 的数组 cc,对于每个下标 ii,将其选作操作对象(无论加还是减)的总次数不能超过 cic_i 次。

请计算经过至多 mm 次操作后,这两个数组的“积”可能达到的最大值。

格式

输入格式

第一行包含两个整数 nnmm,分别表示数组的长度以及最多允许的操作总次数。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n,表示数组 aa 的初始元素。

第三行包含 nn 个整数 b1,b2,,bnb_1, b_2, \ldots, b_n,表示数组 bb 的元素。

第四行包含 nn 个整数 c1,c2,,cnc_1, c_2, \ldots, c_n,表示对每个下标操作次数的上限。

输出格式

输出一行一个整数,表示在满足所有条件的情况下,两数组最大的积。

样例

样例输入 #1

3 3
0 0 0
1 2 -4
2 2 2

样例输出 #1

7

样例解释 #1

初始状态下,两个数组的积为 0×1+0×2+0×(4)=00 \times 1 + 0 \times 2 + 0 \times (-4) = 0

为了使积最大化,我们可以做如下操作:

  • 11 次操作:选择下标 i=2i=2,执行加 11 操作。数组 aa 变为 [1, 1, 0]
  • 22 次操作:选择下标 i=2i=2,执行加 11 操作。数组 aa 变为 [2, 2, 0]。此时下标 22 的操作次数达到限制 c2=2c_2=2
  • 33 次操作:选择下标 i=3i=3,执行减 11 操作。数组 aa 变为 [1, 1, -1]

操作结束后,两数组的积为 $1 \times 1 + 1 \times 2 + (-1) \times (-4) = 1 + 2 + 4 = 7$。这也是可以得到的最大积。

数据规模

注意:你只有通过了子任务的所有测试点,才能获得对应子任务的分数。

子任务编号 分数 nn\le
11 4040 20002000
22 6060 2×1052\times 10^5

对于 100%100\% 的数据,1n2×1051 \leq n \leq 2 \times 10^50m1090 \leq m \leq 10^9104ai,bi104-10^4 \leq a_i, b_i \leq 10^40ci1040 \leq c_i \leq 10^4