题目描述
小 X 做了一个梦,梦里她成为了一名木匠。她面前有 n 根木材,第 i 根木材的长度为 ai,她会按长度从大到小依次处理每根木材,当她处理长度为 x 的木材时(x>1),会将它锯成两根长度为 ⌊2x⌋ 的木材(这两根木材之后也要被处理),如果 x 为奇数就会额外产生一个长度为 1 的木材。
恰好小 X 的朋友小 S 正在收集长度为 1 的木材,她手里有一个长度为 m 的数组 k,她想知道,对每个 i,小 X 处理完第几根木材才能产生至少 ki 个长度为 1 的木材。保证 ki≤∑ai。
输入格式
第一行包含一个整数 n(1≤n≤105),表示初始木材的根数。
第二行包含 n 个整数 a1,a2,…,an(2≤ai≤109),表示每根木材的长度。
第三行包含一个整数 m(1≤m≤105)。
第四行包含 m 个整数 k1,k2,…,km(1≤ki≤∑ai)。
输出格式
共 m 行。第 i 行输出一个整数,表示满足询问 ki 所需处理的最少木材根数。
输入输出样例 #1
输入 #1
3
5 3 2
3
1 3 4
输出 #1
1
2
2
数据范围
对于 30% 的数据,n≤1000,ai≤20。
另有 20% 的数据,ai=2。
另有 10% 的数据,ki≤10。
对于 100% 的数据,n,m≤105。