atcoder#ABC254H. [ABC254Ex] Multiply or Divide by 2

[ABC254Ex] Multiply or Divide by 2

配点 : 600600

問題文

NN 個の非負整数からなる多重集合 A={a1,,aN},B={b1,,bN}A=\{ a_1,\ldots,a_N \}, B=\{ b_1,\ldots,b_N \} が与えられます。 あなたは以下の操作を好きな順番で何度でも行えます。

  • AA に含まれている非負整数を 11 つ選び、xx とする。 AA から xx11 つ削除し、代わりに 2x2x11 つ追加する。
  • AA に含まれている非負整数を 11 つ選び、xx とする。 AA から xx11 つ削除し、代わりに x2\left\lfloor \frac{x}{2} \right\rfloor11 つ追加する。(x\lfloor x \rfloorxx を超えない最大の整数)

あなたの目的は AABB を(多重集合として)一致させることです。 目的を達成することが出来るかどうかを判定し、出来る場合は必要な操作回数の最小値を求めてください。

制約

  • 1N1051 \leq N \leq 10^5
  • 0a1aN1090 \leq a_1 \leq \ldots \leq a_N \leq 10^9
  • 0b1bN1090 \leq b_1 \leq \ldots \leq b_N \leq 10^9
  • 入力はすべて整数

入力

入力は以下の形式で標準入力から与えられる。

NN

a1a_1 \ldots aNa_N

b1b_1 \ldots bNb_N

出力

目的を達成出来る場合は必要な操作回数の最小値を出力せよ。出来ない場合は -1 を出力せよ。

3
3 4 5
2 4 6
2

次のようにして 22 回の操作で目的を達成できます。

  • x=3x=3 とし、AA から x(=3)x\, (=3)11 つ削除し代わりに 2x(=6)2x\, (=6)11 つ追加する。これによって A={4,5,6}A=\{4,5,6\} となる。
  • x=5x=5 とし、AA から x(=5)x\, (=5)11 つ削除し代わりに x2(=2)\left\lfloor \frac{x}{2} \right\rfloor \, (=2)11 つ追加する。これによって A={2,4,6}A=\{2,4,6\} となる。
1
0
1
-1

{0}\{ 0 \}{1}\{ 1 \} にすることは出来ません。