游客 Signup | Login
中文 | En

3198 - B.小学生再摘苹果

    小学生是宿舍里出了名的吃货,怎么可能那几个苹果就满足他的胃口呢,这货要把整棵树上的苹果全部摘下来了啊!

    可是他没有石头了,旁边的易大师终于出手了,他挥一挥手瞬间就变出了n个箱子,每个箱子均为正方体,且大小不一定相同,易大师希望将这n个箱子叠在一起,不过为了易大师的生命安全,要求下面的箱子比上面的箱子大,当然树上的苹果还没全被摘完,而且每个苹果所处的高度也不完全相同,易大师能够摘到高度小于等于他所处的高度的所有的苹果,易大师的身高可以忽略不计!

Input

输入包含多组测试样例

第一行一个整n,表示有n个箱子 (0 <= n <= 100)

接下来的一行包含n个正整数,代表每个箱子的边长ai (0 < ai <= 100)

第三行一个正整数m,表示树上剩余的苹果总数 (0 <= m <= 100)

第四行包含m个正整数,表示每个苹果所处的高度hi (0 <= hi <= 100)

Output

对于每组输出仅包含一行表示易大师能摘取的最大个数

Examples

Input

3
10 20 30
1
10

Output

1

Solution C++

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

int main()
{
	int n, m, k, a[101], b[101];
	while(scanf("%d",&n) != EOF)
	{
		for(int i = 0 ; i < n ; i ++)
		{
			scanf("%d",&a[i]);
		}
		scanf("%d",&m);
		for(int i = 0 ; i < m ; i ++)
		{
			scanf("%d",&b[i]);
		}

		sort(a,a+n);
		int ans = 0, ans1 = 0;

		for(int i = n - 1 ; i >= 0 ; i --)
		{
			if(i != n - 1 && a[i] == a[i+1])
				continue;
			ans += a[i];
		}

		sort(b,b+m);

		for(int i = 0 ; i < m ; i ++)
			if(b[i] <= ans)
				ans1++;

		cout << ans1 << endl;
	}
	return 0;
}
Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题