1495: 凑数
Memory Limit:128 MB
Time Limit:2.000 S
Judge Style:Text Compare
Creator:
Submit:16
Solved:3
Description
给定一个存在 $n$ 个正整数的序列 $S$ 。
现在有 $m$ 次询问,每次给定一个正整数 $x$ 。你需要在序列 $S$ 中选出一个子序列 $T$ 。
要求对于闭区间$[1,x]$中的任意正整数 $y$,都可以在序列 $T$ 中选出子序列 $T'$ ,使得 $T'$ 中的所有元素之和等于 $y$ 。
对于每个询问 $x$ 。你需要最小化序列 $T$ 中的元素个数,并输出最小的数量。如果无法满足要求,请输出$-1$。
现在有 $m$ 次询问,每次给定一个正整数 $x$ 。你需要在序列 $S$ 中选出一个子序列 $T$ 。
要求对于闭区间$[1,x]$中的任意正整数 $y$,都可以在序列 $T$ 中选出子序列 $T'$ ,使得 $T'$ 中的所有元素之和等于 $y$ 。
对于每个询问 $x$ 。你需要最小化序列 $T$ 中的元素个数,并输出最小的数量。如果无法满足要求,请输出$-1$。
Input
第一行,两个整数 $n,m$ ,依次代表序列中元素数量以及询问次数。
第二行,$n$ 个整数,代表序列 $S$ 中的元素。
接下来 $m$ 行,每行一个整数,代表每次询问的 $x$ 。
数据范围:
对于 $100\%$ 的数据:
$1 \le n,m \le 10^5$
保证序列中的数 $a$ ,满足 $1 \le a \le 10^9$
$1 \le x \le 10^9$
第二行,$n$ 个整数,代表序列 $S$ 中的元素。
接下来 $m$ 行,每行一个整数,代表每次询问的 $x$ 。
数据范围:
对于 $100\%$ 的数据:
$1 \le n,m \le 10^5$
保证序列中的数 $a$ ,满足 $1 \le a \le 10^9$
$1 \le x \le 10^9$
Output
$m$ 行,每行一个整数。如果能满足询问要求,输出序列 $T$ 的最小元素数量。否则输出 $-1$ 。
Sample Input Copy
5 3
1 2 4 8 32
7
8
16
Sample Output Copy
3
4
-1
HINT
对应样例的第一次询问,我们可以选出$T=\{1,2,4\}$。
$y=1$时,$T'=\{1\}$
$y=2$时,$T'=\{2\}$
$y=3$时,$T'=\{1,2\}$
$y=4$时,$T'=\{4\}$
$y=5$时,$T'=\{1,4\}$
$y=6$时,$T'=\{2,4\}$
$y=7$时,$T'=\{1,2,4\}$
样例的第二次询问,可以选出$T=\{1,2,4,8\}$
$y=1$时,$T'=\{1\}$
$y=2$时,$T'=\{2\}$
$y=3$时,$T'=\{1,2\}$
$y=4$时,$T'=\{4\}$
$y=5$时,$T'=\{1,4\}$
$y=6$时,$T'=\{2,4\}$
$y=7$时,$T'=\{1,2,4\}$
样例的第二次询问,可以选出$T=\{1,2,4,8\}$