atcoder#AGC048C. [AGC048C] Penguin Skating

[AGC048C] Penguin Skating

配点 : 700700

問題文

LL 個のマスが横一列に並んでいます. マスは左から順に 1,2,,L1,2,\ldots,L と番号が振られています.

NN 匹のペンギンがマス目の上にいます. ペンギンは左から順に 1,2,,N1,2,\ldots,N と番号が振られています. 最初,ペンギン ii はマス AiA_i の上にいます. ここで,1A1<A2<<ANL1 \leq A_1 < A_2 < \ldots < A_N \leq L です.

あなたは,次の操作を好きな回数行うことができます.

  • ペンギンを 11 匹選び,左または右へ向かって滑らせる. ペンギンは,目の前に空マスがある限り滑り続ける. 別のペンギンのいるマスの直前のマスに到達する,もしくは目の前にマスが存在しなくなったら,ペンギンは停止する.

例えば,N=3,L=10N=3,L=10 で,ペンギンのいるマスが (2,3,7)(2,3,7) であるとします. このとき,ペンギン 22 を右に滑らせると,ペンギン 22 はマス 66 まで移動します. また,ペンギン 33 を右に滑らせると,ペンギン 33 はマス 1010 まで移動します.

あなたの目標は,すべての ii について,ペンギン ii がマス BiB_i の上にいるようにすることです. ここで,1B1<B2<<BNL1 \leq B_1 < B_2 < \ldots < B_N \leq L です. 目標が達成可能か判定し,可能ならば必要な操作回数の最小値を求めてください.

制約

  • 1N1051 \leq N \leq 10^5
  • NL109N \leq L \leq 10^9
  • 1A1<A2<<ANL1 \leq A_1 < A_2 < \ldots < A_N \leq L
  • 1B1<B2<<BNL1 \leq B_1 < B_2 < \ldots < B_N \leq L
  • 入力される数はすべて整数.

入力

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

NN LL

A1A_1 A2A_2 \cdots ANA_N

B1B_1 B2B_2 \cdots BNB_N

出力

目標が達成不可能な場合は 1-1 を,可能な場合は必要な操作回数の最小値を出力せよ.

4 11
3 4 6 10
1 5 6 11
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) になる.
1 3
1
2
-1
10 1000000000
65110170 68805223 123016442 275946481 661490312 760727752 764540566 929355340 930658577 947099792
1 2 123016442 661490311 929355337 930658574 999999997 999999998 999999999 1000000000
13