logo AlgoBeat OnlineJudge
登录 注册

#216363. [蓝桥杯 2026 省 Java/Python 研究生组] 抓取卡牌

内存限制:512 MiB 时间限制:3000 ms 标准输入输出
题目类型:VJudge(洛谷) 评测方式:VJudge
上传者: 匿名

题目描述

种不同的卡牌,其中第 种卡牌的基础价值为 ,数量为 张。

你需要从这些卡牌中恰好选出 张,组成自己的卡组。

对于同一种卡牌,随着你选取的数量增加,它后续的价值会下降。具体地,若某种基础价值为 的卡牌已经被选了 张,那么下一张这种卡牌的价值为:

表示对 向下取整,即不超过 的最大整数。

也就是说:

  • 选第 张该种卡牌时,价值为
  • 选第 张时,价值为
  • 选第 张时,价值为
  • 依此类推。

每种卡牌至多只能选取 张。

现在,请你计算:恰好选出 张卡牌时,能够得到的最大总价值是多少。

输入格式

输入共三行。

第一行包含两个整数 ,分别表示卡牌种类数和需要选取的卡牌总数。

第二行包含 个整数 ,表示每种卡牌的基础价值。

第三行包含 个整数 ,表示每种卡牌可供选取的数量。

输出格式

输出一行一个整数,表示最大总价值。

样例

样例输入 1

6 6
1 1 2 3 4 5
1 2 1 2 3 4

样例输出 1

18

数据范围与提示

【样例说明】

将所有可能选取的单张卡牌价值展开后,可得:

  • 种卡牌可贡献:
  • 种卡牌可贡献:
  • 种卡牌可贡献:
  • 种卡牌可贡献:
  • 种卡牌可贡献:
  • 种卡牌可贡献:

从中选出最大的 个值:,它们的和为:,因此答案为

【评测用例规模与约定】

对于 的评测用例,

对于所有的评测用例,满足:

保证所有卡牌总数不少于