QOJ.ac

QOJ

実行時間制限: 2 s メモリ制限: 1024 MB 満点: 100 ハック可能 ✓

#16890. 数列魔法

統計

ハンビョルは3年ぶりにオフラインで開催されるUCPC本選を迎え、特別なイベントを企画した。それは、参加者たちとラズベリーパイを分け合うことである!ハンビョルは円柱状のパイを、すべてのピースが扇形の柱状になるように $M$ 等分し、各ピースの上にラズベリーを1つずつ置いた。そして、各ピースに時計回りの順序で1番から $M$ 番までの番号を付けた。

ハンビョルは大会に合計 $N$ ($N \le M$) 名の参加者が参加することを聞き、各参加者に何番のピースを配るかをあらかじめ決めておいた。ついにすべての参加者が会場に到着し、ハンビョルが計画通りにパイのピースを配ろうとした瞬間、ある参加者がパイの上に載っているラズベリーを指差し、「私にそのラズベリーをくれないなら、問題を10分で全部解いてやる!」と宣言した。すると他の参加者たちも次々と自分が欲しいラズベリーを言い始め、結局すべての参加者が自分が食べたいラズベリーを1つずつ言って帰っていった。

ハンビョルは参加者たちの要求に応えるため、パイに飾られたラズベリーの位置を調整しようとしている。しかし、このラズベリーは環境の変化に敏感で、次のような方法で移動させないとすぐに傷んでしまう。

  • ピースを1つ選択し、そのピースにあるすべてのラズベリーをすぐ次のピースへ移動させる。

ここで、1番のピースのすぐ次のピースは2番のピース、2番のピースのすぐ次のピースは3番のピース、...、$M-1$ 番のピースのすぐ次のピースは $M$ 番のピース、$M$ 番のピースのすぐ次のピースは1番のピースである。

ラズベリーは傷むと他のラズベリーにも悪影響を及ぼすため、ハンビョルはどのラズベリーも傷まないようにしながら、ラズベリーの移動を最小限にしてすべての参加者の要求に応えようとしている。大会が10分で終わってしまう惨事を防ぐためにハンビョルを助けよう。

ただし、参加者は自分が欲しいラズベリーと他のラズベリーを一緒に食べることは気にせず、ラズベリーを移動させる際、ラズベリーが複数あるピースを選択しても移動回数は1回と数える。

入力

最初の行には、パイのピースの数 $M$ と大会参加者の数 $N$ が空白で区切られて与えられる。 ($1 \le N \le M \le 300\,000$)

2行目には、$N$ 個の整数 $a_1, \dots, a_N$ が空白で区切られて与えられる。 ($1 \le a_i \le M$) $a_i$ は $i$ 番目の参加者に割り当てたパイのピースの番号を意味し、すべての $a_i$ は互いに異なる。

3行目には、$N$ 個の整数 $b_1, \dots, b_N$ が空白で区切られて与えられる。 ($1 \le b_i \le M$) $b_i$ は $i$ 番目の参加者が欲しいラズベリーが位置しているパイのピースの番号を意味する。

出力

ラズベリーを傷めずにすべての参加者の要求に応えることができる場合、ラズベリーの移動回数の最小値を出力する。そうでない場合は -1 を出力する。

入出力例

入力 1

5 2
3 5
1 4

出力 1

3

入力 2

3 2
3 2
1 2

出力 2

5

入力 3

4 3
1 3 4
1 1 3

出力 3

-1

注記

最初の例において、次のような方法でラズベリーを合計3回移動させたとき、すべての参加者の要求に応えることができる。これより少なく移動させる方法はない。

i. 1番のピースにあるすべてのラズベリーを2番のピースへ移動させる。 ii. 2番のピースにあるすべてのラズベリーを3番のピースへ移動させる。 iii. 4番のピースにあるすべてのラズベリーを5番のピースへ移動させる。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.