QOJ.ac

QOJ

Time Limit: 3.0 s Memory Limit: 256 MB Total points: 100 Hackable ✓

#14093. 置換ソート

Statistics

整数の配列 $A$ と集合 $B$ があり、$A$ と $B$ に含まれるすべての数は互いに異なります。あなたの仕事は $A$ を整列済みの配列にすることです。そのために、$B$ から任意の数を取り出し、$A$ の任意の要素をその数に置き換えられます。この操作は何度でも行えますが、$B$ の各要素は高々一度しか使えません。

$A$ を整列済みの配列にするために必要な操作回数の最小値を求めるか、不可能であると判定してください。

入力

入力の最初の行には、$A$ と $B$ の大きさをそれぞれ表す整数 $N,M$($1 \le N,M \le 5\cdot10^5$)が与えられます。

2 行目には $N$ 個の整数 $A_1,A_2,\ldots,A_N$ が与えられます。

3 行目には $M$ 個の整数 $B_1,B_2,\ldots,B_M$ が与えられます。

全 $N+M$ 個の要素は互いに異なる正整数で、$10^9$ 以下です。

出力

$A$ を整列済みの配列にできない場合は $-1$ を出力してください。それ以外の場合は必要な操作回数の最小値を出力してください。

入出力例

入力 1

4 1
2 6 13 10
5

出力 1

-1

入力 2

4 2
2 6 13 10
5 4

出力 2

2

入力 3

4 3
2 6 13 10
5 4 19

出力 3

1

注記

3 つの例はいずれも $13>10$ が問題なので、少なくとも一方を変更する必要があります。

最初の例では、$13$ を $5$ に置き換えて小さくできますが、反対側の順序を崩してしまうため、解はありません。

2 つ目の例では $4$ もあり、崩れた側を修復できます。$2$ 回未満の操作では不可能です。

3 つ目の例ではようやく最後の要素を大きくでき、$1$ 回の操作で $A$ を整列できます。

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.