U730213 旧日铁砧的规矩

题目背景

地下城街区的铁匠铺有一条不可打破的死规矩:购买装备必须精准支付,概不找零,也不接受任何溢价。 旧帝国遗留的铸币系统遵循严格的数学规律:铸币的阶数从 $0$ 开始编号,第 $i$ 阶铸币的面值恰好为 $2^i$($i \in \mathbb{N}$)。 冒险者公会为新人配发的标准钱袋中,装有从第 $0$ 阶到第 $k$ 阶的铸币,**每一阶恰好一枚**。除了这套标准配发,你在迷宫中偶然捡到了 $x$ 枚散落的旧帝国铸币($x \in \{0, 1, 2\}$),它们的阶数会被明确告知。 现在你看中了图册上的 $q$ 件装备,面对一长串的标价,你需要快速盘算能否满足铁匠的要求。

题目描述

你当前拥有基础资金:面值从 $2^0$ 到 $2^k$ 的铸币各恰好一枚。 额外资金:$x$ 枚阶数为 $a_i$ 的铸币(面值为 $2^{a_i}$),$a_i$ 必定在 $0$ 到 $k$ 之间。 每次挑选装备可以看作一次独立的询问。第 $j$ 次询问会给出该装备的标价 $m$。 对于每次询问,请判断:在每次询问相互独立的情况下,你能否从现有的所有铸币中选出若干枚,使其面值总和**恰好等于** $m$。

输入格式

第一行包含三个非负整数 $k, x, q$,分别表示标准钱袋包含的最高铸币阶数、额外铸币的数量,以及询问的次数。 若 $x > 0$,第二行将包含 $x$ 个非负整数 $a_1, \dots, a_x$,表示额外铸币的阶数。若 $x = 0$,则该行留空或不存在。 接下来 $q$ 行,每行包含一个正整数 $m$,表示本次询问的装备标价。

输出格式

输出共 $q$ 行。对于每次询问,如果现有的铸币能够恰好凑出标价 $m$,输出 `YES`,否则输出 `NO`(**注意大小写**)。

说明/提示

**【样例解释 #1】** 基础资金为 $k=3$,即拥有面值为 $2^0=1, 2^1=2, 2^2=4, 2^3=8$ 的铸币各一枚。 额外获得 $x=1$ 枚阶数为 $2$ 的铸币,即多出一枚面值为 $4$ 的铸币。 当前拥有的铸币面值集合为:$1, 2, 4, 4, 8$,总面值为 $19$。 * 询问 1(标价 $m=7$):支付方式为 $1+2+4=7$,可以凑出,输出 `YES`。 * 询问 2(标价 $m=15$):支付方式为 $1+2+4+8=15$,可以凑出,输出 `YES`。 * 询问 3(标价 $m=19$):支付方式为 $1+2+4+4+8=19$,可以凑出,输出 `YES`。 * 询问 4(标价 $m=20$):超出拥有铸币的总面值上限,无法凑出,输出 `NO`。 **【数据规模与约定】** * 对于 $30\%$ 的数据,保证 $1 \le q \le 10^3$,$0 \le k \le 10$,$1 \le m \le 10^4$。 * 对于 $100\%$ 的数据,保证 $1 \le q \le 10^5$,$0 \le k \le 16$,$x \in \{0, 1, 2\}$,$0 \le a_i \le k$,$1 \le m \le 2 \times 10^5$。 * 若 $x = 2$,输入的 $a_1$ 与 $a_2$ 可以相同或不同。 * 保证你所拥有的全部铸币总面值不超过 $2 \times 10^5$。