#agc048c. [agc048_c]Penguin Skating

[agc048_c]Penguin Skating

题目描述

LL 个方块在一行上排列,编号从左到右为 1,2,ldots,L1, 2, \\ldots, L

这些方块上有 NN 只企鹅,编号从左到右为 1,2,ldots,N1, 2, \\ldots, N。初始时,企鹅 ii 在方块 AiA_i 上。其中,满足 1leqA1<A2<ldots<ANleqL1 \\leq A_1 < A_2 < \\ldots < A_N \\leq L

你可以进行以下操作任意次数:

  • 选择一只企鹅并向左或向右滑动。只要前方有一个空方块,企鹅就会一直滑动。当它滑动到一个已被另一只企鹅占据的方块之前,或者前方没有方块时,它会停下来。

例如,假设 N=3N=3L=10L=10,企鹅分别位于方块 (2,3,7)(2,3,7)。在这种情况下,如果我们将企鹅 22 向右滑动,它会滑动到方块 66;如果我们将企鹅 33 向右滑动,它会滑动到方块 1010

你的目标是使每只企鹅都位于方块 BiB_i 上,其中满足 1leqB1<B2<ldots<BNleqL1 \\leq B_1 < B_2 < \\ldots < B_N \\leq L。判断是否可以实现目标。如果可以实现,找出所需的最少操作次数。

约束条件

  • 1leqNleq1051 \\leq N \\leq 10^5
  • NleqLleq109N \\leq L \\leq 10^9
  • 1leqA1<A2<ldots<ANleqL1 \\leq A_1 < A_2 < \\ldots < A_N \\leq L
  • 1leqB1<B2<ldots<BNleqL1 \\leq B_1 < B_2 < \\ldots < B_N \\leq L
  • 输入中的所有数字都是整数。

输入

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

NN LL A1A_1 A2A_2 cdots\\cdots ANA_N B1B_1 B2B_2 cdots\\cdots BNB_N

输出

如果无法实现目标,则输出 \-1\-1;如果可以实现,则输出所需的最少操作次数。


示例输入 1

4 11
3 4 6 10
1 5 6 11

示例输出 1

3

以下操作序列可以实现目标:

  • 将企鹅 11 向左滑动。此时企鹅位于方块 (1,4,6,10)(1,4,6,10)
  • 将企鹅 22 向右滑动。此时企鹅位于方块 (1,5,6,10)(1,5,6,10)
  • 将企鹅 44 向右滑动。此时企鹅位于方块 (1,5,6,11)(1,5,6,11)

示例输入 2

1 3
1
2

示例输出 2

-1

示例输入 3

10 1000000000
65110170 68805223 123016442 275946481 661490312 760727752 764540566 929355340 930658577 947099792
1 2 123016442 661490311 929355337 930658574 999999997 999999998 999999999 1000000000

示例输出 3

13