CF261A Maxim and Discounts
题目描述
Maxim 总是在星期天去超市。今天超市有一项特殊的打折促销活动。
共有 $m$ 种打折方式。我们假设打折方式的编号从 $1$ 到 $m$。要使用第 $i$ 种打折,顾客需要拿一个特殊的购物篮,然后把正好 $q_i$ 个商品放进购物篮。根据打折制度的规定,除了购物篮里的商品外,顾客还可以最多从超市获得两件免费的商品。免费的商品数量由顾客选择(可以是 $0$、$1$ 或 $2$)。唯一的条件是:每一件“免费商品”的价格都不能高于购物篮中 $q_i$ 件商品中最便宜的商品的价格。
现在 Maxim 需要在商店中购买 $n$ 件商品。请你计算 Maxim 最少需要花多少钱,假设他能以最优方式使用打折系统。
请假设超市有足够多的购物篮可以进行任何操作。Maxim 可以多次使用同一种打折方式。当然,Maxim 也可以不用任何打折方式直接购买商品。
输入格式
第一行包含一个整数 $m$,表示打折方式的数量,$(1 \leq m \leq 10^5)$。
第二行包含 $m$ 个整数 $q_1, q_2, ..., q_m$,$(1 \leq q_i \leq 10^5)$。
第三行包含一个整数 $n$,表示 Maxim 需要购买的商品数,$(1 \leq n \leq 10^5)$。
第四行包含 $n$ 个整数 $a_1, a_2, ..., a_n$,$(1 \leq a_i \leq 10^4)$,表示每个商品的价格。
各行数字均由单个空格分隔。
输出格式
输出一个整数,表示 Maxim 购买所有商品所需支付的最少金额。
说明/提示
在第一个样例中,Maxim 需要购买两个价格为 $100$ 的商品,并用打折方式获得两个价格为 $50$ 的商品作为免费赠品,这样总共需要支付 $200$。
在第二个样例中,最优策略是先购买 $3$ 个商品,并用打折方式获得 $2$ 个商品免费,这样总共需要支付 $150$。
由 ChatGPT 5 翻译