CF2248G No Balance Left
题目描述
Alisa 有一张购物卡,初始余额为 $h$。超市里有 $n$ 种商品,第 $i$ 种商品的价格为 $c_i$,每种商品可以购买任意数量。
超市还设置了 $m$ 种返利活动。第 $j$ 个返利活动要求单次总消费满 $a_j$ 元,可以返还 $b_j$ 元。
对于每次购物,Alisa 会执行如下操作:
- 她选择一种或多种商品,使得总花费 $x$ 不超过当前卡上余额,并用卡支付 $x$ 元。
- 找出所有满足消费金额不少于 $a_j$ 的返利活动,从中选返利金额最大的那项,并将返利金额加到卡余额。如果没有符合的返利,则不返还。
对于每个 $h$ 从 $1$ 到 $s$,判断 Alisa 是否有办法通过有限次购物操作后,使卡内余额变为 $0$。
输入格式
第一行输入三个整数 $n$、$m$ 和 $s$($1 \le n, m, s \le 125\,000$),分别表示商品种类数、返利活动数和需要判断的初始最大余额。
第二行输入 $n$ 个整数 $c_1, c_2, \ldots, c_n$($1 \le c_i \le 125\,000$),表示每种商品的价格。
接下来 $m$ 行,每行包含两个整数 $a_i$ 和 $b_i$($1 \le a_i, b_i \le 125\,000$),表示第 $i$ 个返利活动的消费门槛和返利金额。
保证 $a_1 < a_2 < \cdots < a_m$ 且 $b_1 < b_2 < \cdots < b_m$。
输出格式
输出 $s$ 行,对于每个 $i$($1 \le i \le s$),如果 Alisa 能够让卡内余额变为 $0$,输出大写字母“YES”;否则输出大写字母“NO”。
你可以用任意大小写输出答案(如 "YES"、"yes"、"Yes"、"yEs" 等都视为正答)。
说明/提示
在第一个样例中,Alisa 可以让余额为 $15$ 的卡变为 $0$,一种操作方法如下:
- 第一步,分别买每种商品各一件,花费 $4+7=11$,余额从 $15$ 变为 $4$。
- 因为 $11 \ge 8$,可以获得 $4$ 元返利,余额从 $4$ 变为 $8$。
- 第二步,买第一种商品一件,花费 $4$,无返利,余额变为 $4$。
- 第三步,再买第一种商品一件,花费 $4$,无返利,余额变为 $0$。
所以,在第一个样例中 $15$ 的输出行为“YES”。
在第二个样例中,若初始余额为 $4$,Alisa 可以买第一种商品一件,余额刚好为 $0$。因为 $4