#abc254h. [abc254_h]Multiply or Divide by 2

[abc254_h]Multiply or Divide by 2

题目描述

给定两个包含 NN 个非负整数的多重集合:A=a1,ldots,aNA=\\{ a_1,\\ldots,a_N \\}B=b1,ldots,bNB=\\{ b_1,\\ldots,b_N \\}
你可以按照以下方式任意次数任意顺序执行操作:

  • AA 中选择一个非负整数 xx。从 AA 中删除 xx 的一个实例,并添加一个 2x2x 的实例。
  • AA 中选择一个非负整数 xx。从 AA 中删除 xx 的一个实例,并添加 leftlfloorfracx2rightrfloor\\left\\lfloor \\frac{x}{2} \\right\\rfloor 的实例。(lfloorxrfloor\\lfloor x \\rfloor 表示不超过 xx 的最大整数部分。)

你的目标是使得 AABB 相等(作为多重集合)。
判断是否可以实现该目标,如果可以的话,找出实现它所需的最小操作数。

约束条件

  • 1leqNleq1051 \\leq N \\leq 10^5
  • 0leqa1leqldotsleqaNleq1090 \\leq a_1 \\leq \\ldots \\leq a_N \\leq 10^9
  • 0leqb1leqldotsleqbNleq1090 \\leq b_1 \\leq \\ldots \\leq b_N \\leq 10^9
  • 输入中的所有值都是整数。

输入

从标准输入中以以下格式给出输入:

NN a1a_1 ldots\\ldots aNa_N b1b_1 ldots\\ldots bNb_N

输出

如果可以实现目标,打印需要实现它的最小操作数;否则,打印 -1


示例输入 1

3
3 4 5
2 4 6

示例输出 1

2

你可以按照以下方式在两次操作内实现目标。

  • 选择 x=3x=3,从 AA 中删除一个实例 x,(=3)x\\, (=3),并添加一个实例 2x,(=6)2x\\, (=6)。现在我们有 A=4,5,6A=\\{4,5,6\\}
  • 选择 x=5x=5,从 AA 中删除一个实例 x,(=5)x\\, (=5),并添加一个实例 $\\left\\lfloor \\frac{x}{2} \\right\\rfloor \\, (=2)$。现在我们有 A=2,4,6A=\\{2,4,6\\}

示例输入 2

1
0
1

示例输出 2

-1

无法将 0\\{ 0 \\} 转换为 1\\{ 1 \\}