atcoder#AGC048C. [AGC048C] Penguin Skating
[AGC048C] Penguin Skating
配点 : 点
問題文
個のマスが横一列に並んでいます. マスは左から順に と番号が振られています.
匹のペンギンがマス目の上にいます. ペンギンは左から順に と番号が振られています. 最初,ペンギン はマス の上にいます. ここで, です.
あなたは,次の操作を好きな回数行うことができます.
- ペンギンを 匹選び,左または右へ向かって滑らせる. ペンギンは,目の前に空マスがある限り滑り続ける. 別のペンギンのいるマスの直前のマスに到達する,もしくは目の前にマスが存在しなくなったら,ペンギンは停止する.
例えば, で,ペンギンのいるマスが であるとします. このとき,ペンギン を右に滑らせると,ペンギン はマス まで移動します. また,ペンギン を右に滑らせると,ペンギン はマス まで移動します.
あなたの目標は,すべての について,ペンギン がマス の上にいるようにすることです. ここで, です. 目標が達成可能か判定し,可能ならば必要な操作回数の最小値を求めてください.
制約
- 入力される数はすべて整数.
入力
入力は以下の形式で標準入力から与えられる.
出力
目標が達成不可能な場合は を,可能な場合は必要な操作回数の最小値を出力せよ.
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