钢筋切割
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小明要盖一座新房子,他需要一些固定长度的钢筋来让他的房子更结实,于是小明前往钢材厂购买钢筋。但是钢材厂只有长规格的钢筋,没有小明需要的短规格钢筋。不过小明可以购买长规格钢筋切割成他需要的短规格钢筋。小明还有一个黑科技切割机,切割钢筋不会产生任何损失,也就是说长度为9的钢筋可以切成长度为7和2的两根钢筋。

你的任务:给你小明所需要的钢筋的规格和钢材厂能够给出的钢筋的规格,求小明最多能够得到多少他所需要的钢筋。

输入描述:

第一行为整数M 表示钢材厂能够提供的钢筋根数。

紧跟着M 行为钢材厂提供的每根钢筋的长度。

接下来一行(即第M+2行)为一个整数N,表示小明所需要的钢筋的根数。

接下来N行表示他所需要的每一根钢筋的长度。钢筋长度小于32767。(钢材提供的钢筋每根只能使用一次,小明所需要的钢筋每种只需要一根。如果同一规格的钢筋有多根会输入多个相同的数。)

输出描述:

一个整数,表示小明最多能得到的符合规格条件的钢筋的个数。

示例1

输入

复制
4
30
40
50
25
10
15
16
17
18
19
20
21
25
24
30

输出

复制
7
示例2

输入

复制
3
20
10
10
9
3
3
3
5
5
7
8
8
9

输出

复制
7

备注:

【数据范围与约定】

M≤50,N≤1000