牛牛的战役
题号:NC21613
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

牛牛逐渐成长,战斗力也渐渐增加,并可以指挥若干个oier协同作战
给你一个数组a表示我方每个人的战斗力

再给你一个数组b

再给你一个数组c

c[i]表示敌方b[i]战斗力的人有c[i]个

每个oier每次可以选择一名敌方人员进行战斗,如果战斗力大于等于敌方人员,就可以战胜,经验值+1

最开始的时候每个人的经验值都是0

现在牛牛想要打败所有敌方人员,也就是说每个敌方人员都要被一个oier所打败

但是牛牛想要最小化最大的经验值

如果不能打败所有的敌方人员,输出-1

否则输出最小化最大的经验值

输入描述:

第一行输入一个整数n表示我方人员的数量(1 ≤ n ≤ 50)

第二行输入 n个整数ai表示我方每个人员的战斗力(1 ≤ ai ≤ 10000)

第三行输入一个整数m表示b数组的长度(1 ≤ m ≤ 50)

第四行输入m个整数bi (1 ≤ bi ≤ 10000)

第五行输入m个整数ci (1 ≤ ci ≤ 1014)

输出描述:

输出一个整数
示例1

输入

复制
3
2 3 5
3
1 3 4
2 9 4

输出

复制
7

说明

牛牛指挥0号oier击败2个战斗力为1的敌方人员

牛牛指挥1号oier击败7个战斗力为3的敌方人员

牛牛指挥2号oier击败2个战斗力为3的敌方人员与4个战斗力为4的敌方人员
示例2

输入

复制
3
2 3 5
3
1 1 2
2 9 4

输出

复制
5
示例3

输入

复制
3
14 6 22
2
8 33
9 1

输出

复制
-1
示例4

输入

复制
1
1
20
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
100000000000000 100000000000000 100000000000000 100000000000000 100000000000000 100000000000000 100000000000000 100000000000000 100000000000000 100000000000000 100000000000000 100000000000000 100000000000000 100000000000000 100000000000000 100000000000000 100000000000000 100000000000000 100000000000000 100000000000000

输出

复制
2000000000000000

备注:

子任务一30分:n,m<=10

子任务二30分:n,m<=20

子任务三40分:n,m<=50