atcoder#AGC048C. [AGC048C] Penguin Skating

[AGC048C] Penguin Skating

题目描述

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

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

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

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

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

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

输入格式

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

N N L L A1 A_1 A2 A_2 \cdots AN A_N B1 B_1 B2 B_2 \cdots BN B_N

输出格式

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

题目大意

LL 个格子排成一排编号从 11LL。格子上有 NN 只企鹅,第 ii 只所在的格子为 AiA_i,满足 Ai<Ai+1A_i<A_{i+1}。定义一次操作为选一只企鹅,将其往左或往右移动直到不能移动为止,其中不能移动指的是所在的格子为 11LL,或者下一个格子上有企鹅。现给出位置集合 BB,问至少经过多少次操作才能使企鹅所在的格子组成的集合与 BB 相等,或者输出 1-1 表示无解。

4 11
3 4 6 10
1 5 6 11
3
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

提示

制約

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

Sample Explanation 1

次のように操作すればよいです. - ペンギン 1 1 を左に滑らせる.ペンギンの位置は,(1,4,6,10) (1,4,6,10) になる. - ペンギン 2 2 を右に滑らせる.ペンギンの位置は,(1,5,6,10) (1,5,6,10) になる. - ペンギン 4 4 を右に滑らせる.ペンギンの位置は,(1,5,6,11) (1,5,6,11) になる.