题目描述
给定两个包含 N 个非负整数的多重集合:A=a1,ldots,aN 和 B=b1,ldots,bN。
你可以按照以下方式任意次数任意顺序执行操作:
- 在 A 中选择一个非负整数 x。从 A 中删除 x 的一个实例,并添加一个 2x 的实例。
- 在 A 中选择一个非负整数 x。从 A 中删除 x 的一个实例,并添加 leftlfloorfracx2rightrfloor 的实例。(lfloorxrfloor 表示不超过 x 的最大整数部分。)
你的目标是使得 A 和 B 相等(作为多重集合)。
判断是否可以实现该目标,如果可以的话,找出实现它所需的最小操作数。
约束条件
- 1leqNleq105
- 0leqa1leqldotsleqaNleq109
- 0leqb1leqldotsleqbNleq109
- 输入中的所有值都是整数。
输入
从标准输入中以以下格式给出输入:
N
a1 ldots aN
b1 ldots bN
输出
如果可以实现目标,打印需要实现它的最小操作数;否则,打印 -1
。
示例输入 1
3
3 4 5
2 4 6
示例输出 1
2
你可以按照以下方式在两次操作内实现目标。
- 选择 x=3,从 A 中删除一个实例 x,(=3),并添加一个实例 2x,(=6)。现在我们有 A=4,5,6。
- 选择 x=5,从 A 中删除一个实例 x,(=5),并添加一个实例 $\\left\\lfloor \\frac{x}{2} \\right\\rfloor \\, (=2)$。现在我们有 A=2,4,6。
示例输入 2
1
0
1
示例输出 2
-1
无法将 0 转换为 1。