神奇的硬币I
题号:NC204124
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 64 M,其他语言128 M
64bit IO Format: %lld

题目描述

StarrySky 有 n 枚神奇的硬币(下标从 1 ~ n),每枚硬币具有固定的价值 val_i,同时,商店中有 m 件物品(下标从 1 ~ m),每件物品都有一个固定的重量 w_i

在 StarrySky 的世界里,硬币的购买规则与现实世界不同,在他的世界里,只要满足 ,StarrySky 即可顺利购买这件物品,但是,这枚硬币并不会被消耗。换句话说,如果当前硬币的价值为 val,那么,所有满足 的物品都会被购买。

对于同一件物品 i,相同的硬币只能购买这件物品不超过 1 次,但是不影响其它的硬币对这件物品的购买,即:1 号硬币可以选择购买第 i 件物品,同样的,第 n 号硬币也可以选择购买此件物品。

现在,StarrySky 希望用这 n 枚硬币购买尽可能多的物品。

显然,StarrySky 也作为一个 ACMer,不会用这个问题来麻烦大家,毕竟训练时间是宝贵的。但是,在用这 n 枚硬币以上述准则全部购买完物品之后,StarrySky 发现购买的物品实在太多了,JK 牌小汽车装不下了。因此,StarrySky 只好忍痛割爱,选择只购买这 m 件物品中最受欢迎的几件物品。

所谓最受欢迎是指:这 m 件物品中,被不同硬币所购买次数最多的物品。

显然,最受欢迎的物品可能不止有一件,所以,StarrySky 希望知道最受欢迎的物品的数量。由于现在的 StarrySky 已经搬物品搬到汗流浃背,实在写不动程序来解决这个问题,于是他向同为 ACMer 的你求救,希望你能帮帮 StarrySky,求出最受欢迎的物品的数量。

输入描述:

第一行输入两个正整数 .

第二行输入 n 个正整数 ,表示 n 个硬币的价值。

第三行输入 m 个正整数 ,表示 m 个物品的重量。

输出描述:

输出仅一行,一个整数表示最受欢迎的物品的数量;特殊的,如果这 n 枚硬币连一件物品都买不了,则输出 -1.
示例1

输入

复制
5 5
3 5 6 3 8
3 2 5 1 6

输出

复制
3

说明

第一枚硬币可以购买下标为 1, 2, 4 的物品
第二枚硬币可以购买下标为 1, 2, 3, 4 的物品
第三枚硬币可以购买下标为 1, 2, 3, 4, 5 的物品
以此类推......
可以发现,下标为 1, 2, 4 的物品的购买次数最多,所以最受欢迎的物品数量为 3.